Tensorflow ValueError:两个形状中的尺寸0必须相等,但是为344和2.从形状0与其他形状合并

时间:2017-03-08 16:41:46

标签: tensorflow lstm

我目前正在攻读我的学士论文。目标是训练LSTM在一段音乐中分离乐器。因此,我输入一个由短期傅里叶变换处理的信号,该信号输出每个频率具有复数值的窗口阵列。然后将此数组放入占位符。我目前不确定输入维度应该是什么[批量大小,序列长度,输入维度]我刚刚放入1.以下是我的代码的摘录。

num_hidden,numFreqs=1024
numWindows=344

input_data = tf.placeholder(tf.float32,[numWindows,numFreqs,1])
target_data = tf.placeholder(tf.float32,[numWindows,numFreqs,1])

cell = tf.nn.rnn_cell.LSTMCell(num_hidden, forget_bias=1.0)

val = tf.nn.dynamic_rnn(cell, input_data, dtype=tf.float32)

weight = tf.Variable(tf.truncated_normal([numFreqs,num_hidden])) 
bias = tf.Variable(tf.truncated_normal([num_hidden]))

prediction = tf.add(tf.mul(val,weight),bias)

cost = tf.reduce_mean(tf.square(prediction - target_data))

optimizer = tf.train.AdamOptimizer(learning_rate)
minimize = optimizer.minimize(cost)

mistakes = tf.not_equal(tf.argmax(target_data, 1), tf.argmax(prediction, 1))     
error = tf.reduce_mean(tf.cast(mistakes, tf.float32))

我运行时在预测行中出现此错误

ValueError: Dimension 0 in both shapes must be equal, but are 344 and 2
From merging shape 0 with other shapes.

numWindows的值为344,因此input_data占位符会受到影响。但我找不到引起问题的其他形状。重量和偏差变量有形状[1024,1024]和[1024]所以我认为它们不是问题。如果您需要更多信息,我很乐意将其提供给您。

0 个答案:

没有答案