首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tensorflow -训练Adam

Tensorflow -训练Adam
EN

Stack Overflow用户
提问于 2018-08-17 01:58:30
回答 1查看 38关注 0票数 0

我尝试用tensorflow构建我的第一个简单神经网络,上面可以看到我的代码。我的代码可以计算损失,但是当我尝试添加train_step时,我得到了错误消息InvalidArgumentError (see above for traceback): Matrix size-incompatible: In[0]: [2,2], In[1]: [1024,1],它告诉我矩阵的尺寸不兼容,但我不理解尺寸。在我看来,它们一定是1和1...

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-17 04:59:32

原因是您的输入和标签不一致。对于您的输入,您有2个维度为(1,5)的输入向量。在您的输出层中,您有一个输出。在您的标签中,您只有一个维度(1,2)的示例。

根据你想要做的事情,有两个修复。如果你打算做两个训练示例(看起来就是你在做的):

代码语言:javascript
复制
input=[[1,2,3,4,5],[6,7,8,9,10]]
labels=[[1],[1]]

并保持其余部分不变。这样,您就有了2个输入向量和2个标签示例。

第二种可能的解释是,你输入两个输入向量,它们的标签都是1,1。然后保持一切不变,但将输出层改为:

代码语言:javascript
复制
output = tf.layers.dense(inputs=hidden, units=2)

我很确定第一个修复就是你要找的。此外,您的代码永远不会更新您的神经网络,因为您没有在任何地方使用sess.run(train_step)。如果你想要它真正的训练,你也需要这一步。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51882858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档