0 前言
tensorflow中自带四种交叉熵函数,tensorflow版本太低可能有的交叉熵函数没有,尽量版本高一些。
交叉熵计算输入的logits都不是softmax或sigmoid的输出,而是softmax或sigmoid函数的输入,也就是说在调用损失函数时会在内部进行sigmoid或softmax操作,直接喂给网络预测的输出值就可以了,而不能在调用函数前进行softmax或sigmoid,会导致计算会出错。
常用函数:
tf.nn.softmax_cross_entropy_with_logits()
tf.nn.sparse_softmax_cross_entropy_with_logits()
tf.nn.sigmoid_cross_entropy_with_logits()
tf.nn.weighted_cross_entropy_with_logits()
其次就是参数labels和logits的数据唯独、类型一定要按每个函数要求输入。可以在定义的时候指定或者调用交叉熵函数前转化。
-
定义时指定:
-
y = np.array([[0, 1, 0], [1, 0, 0]],dtype=float32) y_pre = np.array([[12, 3, 2], [3, 10, 1]],dtype=float32)
-
-
调用前转化:
-
y = np.array([[1, 0, 0], [0, 1, 0]],dtype=float32) y = np.array(y).astype(np.float32)
-