我正在编写一个简单的损失函数,其中我必须将张量转换为 numpy 数组(这是必需的)。我只是想打印张量的值,但收到此错误:-
张量("loss/activation_4_loss/Print:0", shape=(?, 224, 224, 2),
数据类型=float32)
def Lc(y_true, y_pred):
x=K.print_tensor(y_pred)
print(x)
return K.mean(y_pred)
请告诉我如何从张量中获取值(数字)?我也尝试过“eval”,但它也引发了一个大错误,即没有会话存在,它是一个占位符等。整个程序执行良好,只是“打印张量“线路引起问题。
print 语句是多余的。 print_tensor 已经打印了这些值。
来自 print_tensor 的文档:
“注意print_tensor
返回一个与以下内容相同的新张量x
应该在下面的代码中使用它。否则
评估期间不考虑打印操作."
上面的代码中,由于y_pred被赋值给x并且x不再使用,所以打印失败。
使用下面的版本。
def Lc(y_true, y_pred):
y_pred=K.print_tensor(y_pred)
return K.mean(y_pred)
def cat_loss(y_true, y_pred):
y_pred = K.print_tensor(y_pred)
return K.categorical_crossentropy(y_true, y_pred)
将这个 cat_loss 函数放入训练循环后,我可以看到如下输出:
[[0.000191014129 0.230871275 0.43813318]...]
190/255 [=====================>........] - 预计到达时间:0 秒 - 损失:0.3442 - 加速:0.9015
[[3.16367514e-05 1.70419597e-07 0.000147014405]...]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)