python– 具有张量流的语义分段 – 损失函数中的ValueError(稀疏 –softmax)

python– 具有张量流的语义分段 – 损失函数中的ValueError(稀疏 –softmax),第1张

概述所以,我正在建立一个完全卷积网络(FCN),基于Marvin Teichmann's tensorflow-fcn我的输入图像数据暂时是750x750x3 RGB图像.在通过网络运行后,我使用shape [batch_size,750,750,2]的logits进行损失计算.这是一个二进制分类 - 我这里有两个类,[0,1]在我的标签中(形状[batch_s

所以,我正在建立一个完全卷积网络(FCN),基于Marvin Teichmann’s tensorflow-fcn

我的输入图像数据暂时是750x750x3 RGB图像.
在通过网络运行后,我使用shape [batch_size,750,2]的logits进行损失计算.

这是一个二进制分类 – 我这里有两个类,[0,1]在我的标签中(形状[batch_sizex750x750].这些进入损失函数,如下:

def loss(logits,labels,num_classes):with tf.name_scope('loss mine'):    logits = tf.to_float(tf.reshape(logits,[-1,num_classes]))    #CHANGE labels type to int,for sparse_softmax...    labels = tf.to_int64(tf.reshape(labels,[-1]))    print ('shape of logits: %s' % str(logits.get_shape()))    print ('shape of labels: %s' % str(labels.get_shape()))    cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(logits,name='Cross_Entropy')    tf.add_to_collection('losses',cross_entropy)    loss = tf.add_n(tf.get_collection('losses'),name='total_loss')return loss

这些是重塑后的logits和标签的形状:

shape of logits: (562500,2)shape of labels: (562500,)

在这里,它抛出一个ValueError说明:

Shapes () and (562500,) are not compatible

完整追溯如下:

  file "train.py",line 89,in 

建议?我执行的tf.add_to_collection(‘loss’,cross_entropy)是错误的吗?

更新:

我尝试在没有像素求和的情况下运行它(或者我认为),通过直接返回上面代码中的cross_entropy作为损失.

它似乎有效. (它现在从训练优化器函数抛出一个ValueError,说明:没有为任何变量提供渐变.
假设这与我的体重初始化和正规化有关,而不是其他任何事情.

更新2:

以上(关于由于没有梯度而导致的ValueError)是微不足道的.如here所述,当定义的任何tf.Variable对象与正在最小化的丢失张量之间没有路径时,通常会遇到此消息.

使用tf.add_n的初始问题仍然存在.我假设它与Graph集合在TensorFlow中的工作方式有关.初始化我的变量后,错误现在显示为:

Shapes () and (?,) are not compatible
最佳答案关闭.原来在损失函数中的代码缺少平均求和.对于遇到此问题的任何其他人,修改下面的损失函数,它应该工作正常.

    cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(logits,name='Cross_Entropy')    cross_entropy_mean = tf.reduce_mean(cross_entropy,name='xentropy_mean')    tf.add_to_collection('losses',cross_entropy_mean)    loss = tf.add_n(tf.get_collection('losses'),name='total_loss')return loss 
总结

以上是内存溢出为你收集整理的python – 具有张量流的语义分段 – 损失函数中的ValueError(稀疏 – softmax)全部内容,希望文章能够帮你解决python – 具有张量流的语义分段 – 损失函数中的ValueError(稀疏 – softmax)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1206352.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)