没用明白在这里面one-hot编码是怎么将求出的概率p_y变成和前面二分类时一样的预测值-实际值的绝对值的?
来源:2-8 神经网络实现(多分类逻辑斯蒂回归模型实现)
qq_慕容8357050
2019-07-24
写回答
1回答
-
AlenW
2019-07-30
one-hot编码不是求出概率,举个例子它 y =3 ;
y_ one_hot= tf.one_hot(y, 10, dtype=tf.float32)
y_ one_hot = [0, 0, 0, 1, 0, 0, 0, 0, 0, 0]
p_y = tf.nn.softmax(y_) 这是一个把y_的也就是预测到的结果转换成 分类为0-9 的概率 且和为1。
你可以理解为 完全正确的情况下(非常极端的情况),预测成3的概率为1,预测成其他数字都是的概率为0由于你的问题不是很明确,求出概率和预测值-真实值的绝对值没有任何关系
求概率是预测,预测值-真实值的绝对值是求误差
假设你想问的是怎么求出loss误差
就是(y_one_hot - p_y)^2求均值 也就是tf.reduce_mean()的操作,如果这个函数不是很懂,你可以查阅相应的API。在多分类的时候y_one_hot - p_y 是一个n*m矩阵, m是类别数,也就是本节课中的10,n数据样本数,也就是这节课的batch_size. 这个矩阵就是误差,对这个矩阵求均值。
以下是矩阵求均值的例子
x = [[1,2,3],[1,2,3]] xx = tf.cast(x,tf.float32) mean_all = tf.reduce_mean(xx, keep_dims=False) #keep_dims是指定是否保持原有的张量维度
mean_all 的结果就是2.0
00
相似问题