def note_to_encoding(self, chosen_note, relative_position, low_bound, high_bound):
assert chosen_note.ndim == 1
n_batch = chosen_note.shape[0]
dont_play_version = T.switch( T.shape_padright(T.eq(chosen_note, 0)),
T.tile(np.array([[1,0] + [0]*(self.ENCODING_WIDTH-2)], dtype=np.float32), (n_batch, 1)),
T.tile(np.array([[0,1] + [0]*(self.ENCODING_WIDTH-2)], dtype=np.float32), (n_batch, 1)))
rcp = T.tile(np.array([0,0,1],dtype=np.float32), (n_batch, 1))
circle_1 = T.eye(4)[(chosen_note-2)%4]
circle_2 = T.eye(3)[(chosen_note-2)%3]
octave = T.eye(self.num_octaves)[(chosen_note-2+low_bound-self.octave_start)//12]
play_version = T.concatenate([rcp, circle_1, circle_2, octave], 1)
encoded_form = T.switch( T.shape_padright(T.lt(chosen_note, 2)), dont_play_version, play_version )
return encoded_form
circle_of_thirds_encoding.py 文件源码
python
阅读 34
收藏 0
点赞 0
评论 0
评论列表
文章目录