tensorflow GradientDescentOptimizer:op输入和计算输入渐变之间的形状不兼容

时间:2018-05-24 04:54:52

标签: python tensorflow gradient-descent

该模型在优化步骤之前运行良好。但是,当我想优化我的模型时,出现错误消息:

  

op输入和计算输入渐变之间的形状不兼容。   正向操作:softmax_cross_entropy_with_logits_sg_12。输入   index:0。原始输入形状:(16,1)。计算输入梯度   形状:(16,16)

以下是我的代码。

logsoftmax

1 个答案:

答案 0 :(得分:1)

纠正以下事项。

首先,

将占位符输入形状更改为此

X = tf.placeholder(tf.int32, shape=[None,400]
Y = tf.placeholder(tf.float32, shape=[None,1]

为什么因为这可以让您自由地喂食任何尺寸。这是首选,因为虽然训练时你想使用迷你批次,但在预测或推理时间,你通常会提供单一的东西。标记没有,照顾好。

第二,

纠正您的体重初始化,您正在喂食随机值,它们也可能是负面的。始终建议初始化为略微正值。 (我看到你正在使用relu作为激活,负梯度值的渐变为零,所以这些权重永远不会在渐变下降中更新,换句话说那些是无用的权重)

第三,

Logits是您从W2*x + b2获得的结果。 tf.nn.softmax_cross.....(..)自动应用softmax激活。所以最后一层不需要SeLu。