Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 这是有效的seq2seq lstm模型吗?_Python_Keras_Lstm_Seq2seq - Fatal编程技术网

Python 这是有效的seq2seq lstm模型吗?

Python 这是有效的seq2seq lstm模型吗?,python,keras,lstm,seq2seq,Python,Keras,Lstm,Seq2seq,你好,我正在尝试建立一个seq2seq模型来生成一些音乐。 不过我真的不太了解它。 在互联网上,我发现了这种模式: def createSeq2Seq(): #seq2seq模型 #编码器 模型=顺序() 添加(LSTM(输入形状=(无,输入尺寸),单位=数量单位,激活='tanh',返回序列=真)) 添加(BatchNormalization()) 模型。添加(辍学(0.3)) 添加(LSTM(num_单位,激活='tanh')) #译码器 模型添加(重复向量(y顺序长度)) 层数=2 对于范

你好,我正在尝试建立一个seq2seq模型来生成一些音乐。 不过我真的不太了解它。 在互联网上,我发现了这种模式:

def createSeq2Seq():
#seq2seq模型
#编码器
模型=顺序()
添加(LSTM(输入形状=(无,输入尺寸),单位=数量单位,激活='tanh',返回序列=真))
添加(BatchNormalization())
模型。添加(辍学(0.3))
添加(LSTM(num_单位,激活='tanh'))
#译码器
模型添加(重复向量(y顺序长度))
层数=2
对于范围内的u(num_层):
add(LSTM(num_单位,激活='tanh',返回_序列=True))
添加(BatchNormalization())
模型。添加(辍学(0.3))
添加(时间分布(密集(输出尺寸,激活='softmax'))
回归模型
我的数据是一张钢琴的列表。钢琴卷是一个矩阵,列表示不同可能音高的一个热编码(在我的例子中为49),每列表示一个时间(在我的例子中为0,02秒)。然后,pianoroll矩阵只有1和0

我已经准备好了我的训练数据,将我的pianoroll歌曲(一首接一首)重塑成 形状=(某物,批量大小,49)。因此,我的输入数据是所有的歌曲,一首接一首,以batchsize大小的块分开。然后,我的训练数据是相同的输入,但延迟了一批

x顺序长度和y顺序长度等于批次大小。输入尺寸=49

我的输入和输出序列具有相同的维度


我的推理有错误吗?我发现seq2seq型号正确吗?RepeatVector做什么?

这不是seq2seq模型
RepeatVector
获取最后一个编码器LSTM的最后一个状态,并为每个输出令牌创建一个副本。然后将这些副本输入到“解码器”LSTM中,因此它在每个时间步中都有相同的输入

适当的自回归解码器将其先前的输出作为输入,即,在训练时,解码器的输入与其输出相同,但移动了一个位置。这也意味着您的模型错过了解码器输入的嵌入层