简短答案 :
移调您
pred使用向量
tf.transpose(pred)。
更长的答案 :
问题在于
pred(预测)和
y(标签)的形状不同:一个是行向量,另一个是列向量。显然,当对它们应用按元素进行 *** 作时,将得到一个矩阵,这不是您想要的。
解决方案是使用来转置预测向量,
tf.transpose()以获得适当的向量,从而获得适当的损失函数。实际上,如果在示例中将批处理大小设置为1,则即使没有修复,它也会起作用,因为转置1x1向量是无 *** 作的。
我将此修复程序应用于您的示例代码,并观察到以下行为。修复之前:
Epoch: 0245 cost= 84.743440580[*]----------------------------label value: 23 estimated value: [ 27.47437096]label value: 50 estimated value: [ 24.71126747]label value: 22 estimated value: [ 23.87785912]
并在同一时间点修复后:
Epoch: 0245 cost= 4.181439120[*]----------------------------label value: 23 estimated value: [ 21.64333534]label value: 50 estimated value: [ 48.76105118]label value: 22 estimated value: [ 24.27996063]
您会看到成本要低得多,并且实际上它正确地获知了值50。您必须对学习率进行一些微调,以提高您的学习成绩。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)