如何解决损失功能测试
我只想定义一个损失函数进行测试。
我以欧氏距离为例:
def euc_dist_keras(y_true,y_pred):
return K.sqrt(K.sum(K.square(y_true - y_pred),axis=-1,keepdims=True))
由于我必须从夫妇(x,y)的净列表中获取信息,因此我想在NN之外对此进行测试。
所以我用过:
y_true = [[0.,1.],[0.,0.]]
y_pred = [[1.,[1.,0.]]
只需:
edk = euc_dist_keras(y_true,y_pred)
我得到了错误: TypeError:-:“列表”和“列表”的不受支持的操作数类型
所以我用过:
y_true_array = np.array(y_true)
y_pred_array = np.array(y_pred)
edk = euc_dist_keras(y_true_array,y_pred_array)
但获得:
Tensor("Sqrt:0",shape=(2,1),dtype=float64)
代替预期的输出值:1
如何获得所需的值? 相同的euc_dist_keras,用于:
model.compile(loss=euc_dist_keras,optimizer=opt)
将完全按照我测试的方式工作吗?
谢谢!
已添加:
with tf.Session() as sess: print(edk.eval())
我获得了: [[1.] [1。]]
我期望: 1。
也许我在def上犯了一些错误? 还是在编译模型时使用所有样本的均值?
解决方法
听起来这是TensorFlow v1代码。如果是这样,则必须在“会话”中运行这些操作才能对其进行评估。请参见SO How to print the value of a Tensor object in TensorFlow?以及会话中的TF v1文档:
https://www.tensorflow.org/api_docs/python/tf/compat/v1/Session
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。