我尝试使用tensorflow构建我的第一个简单神经网络,在上面可以看到我的代码。我的代码可以计算出损失,但是当我尝试添加train_step时,我收到了错误消息InvalidArgumentError (see above for traceback): Matrix size-incompatible: In[0]: [2,2], In[1]: [1024,1]
,该错误消息说Matrxis的尺寸不兼容,但是我不理解尺寸。我认为它们必须是[1]和[1] ...
input=[[1,2,3,4,5],[6,7,8,9,10]]
labels=[1,1]
x = tf.placeholder(tf.float32, [None, 5])
y = tf.placeholder(tf.float32)
hidden = tf.layers.dense(inputs=x, units=1024, activation=tf.nn.relu)
output = tf.layers.dense(inputs=hidden, units=1)
loss = tf.losses.softmax_cross_entropy(y, output)
train_step = tf.train.AdamOptimizer(1).minimize(loss)
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
for i in range(1):
result = sess.run(train_step, feed_dict={x: input,y: labels})
print(result)
答案 0 :(得分:0)
原因是由于您的输入和标签不一致。对于您的输入,您有2个输入向量,其尺寸为(1,5)。在输出层中,您只有一个输出。在标签中,只有一个尺寸(1,2)的示例。
两个修复程序,具体取决于您要执行的操作。如果您打算做两个训练示例(看起来像您正在做的那样):
input=[[1,2,3,4,5],[6,7,8,9,10]]
labels=[[1],[1]]
,其余的保持不变。这样,您就有2个输入向量和2个标签示例。
第二种可能的解释,其中您要输入2个输入矢量,它们的标签均为[1,1]。然后将所有内容保持不变,但是将输出层更改为:
output = tf.layers.dense(inputs=hidden, units=2)
我很确定第一个解决方法就是您要寻找的。同样,您的代码将永远不会更新您的神经网络,因为您在任何地方都没有sess.run(train_step)。如果您希望它实际训练,那么您也将需要该步骤。