Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在不使用argmax函数(argmax不可微)的情况下实现多类骰子损失函数?_Python 3.x_Tensorflow_Keras_Deep Learning - Fatal编程技术网

Python 3.x 如何在不使用argmax函数(argmax不可微)的情况下实现多类骰子损失函数?

Python 3.x 如何在不使用argmax函数(argmax不可微)的情况下实现多类骰子损失函数?,python-3.x,tensorflow,keras,deep-learning,Python 3.x,Tensorflow,Keras,Deep Learning,我正在尝试在tensorflow中实现一个多类骰子丢失函数。因为它是多类骰子,所以我需要将每个类的概率转换为它的一个热形式。例如,如果我的网络输出这些概率: [0.2,0.6,0.1,0.1](假设4类) 我需要将其转换为: [0 1 0 0] 这可以通过使用tf.argmax后跟tf.one_hot来完成 问题是,tf.argmax不可微,它将抛出一个错误: ValueError: An operation has `None` for gradient. Please make sure t

我正在尝试在tensorflow中实现一个多类骰子丢失函数。因为它是多类骰子,所以我需要将每个类的概率转换为它的一个热形式。例如,如果我的网络输出这些概率:
[0.2,0.6,0.1,0.1](假设4类)
我需要将其转换为:
[0 1 0 0]
这可以通过使用tf.argmax后跟tf.one_hot来完成

问题是,tf.argmax不可微,它将抛出一个错误:

ValueError: An operation has `None` for gradient. Please make sure that all of your ops have a gradient defined (i.e. are differentiable). Common ops without gradient: K.argmax, K.round, K.eval.
如何解决这个问题?我们可以不使用tf.argmax做同样的事情吗?

看一看。您不需要进行转换(将
[0.2,0.6,0.1,0.1]
转换为
[0 1 0]
)。只需将它们作为介于0和1之间的连续值

如果我理解正确,损失函数只是实现预期目标的一个替代项。即使它不一样,只要它是一个好的代理,它就是好的(否则,它是不可微的)

在计算时间内,可以随意使用
tf.argmax
来获取实际度量

ValueError: An operation has `None` for gradient. Please make sure that all of your ops have a gradient defined (i.e. are differentiable). Common ops without gradient: K.argmax, K.round, K.eval.