1 softmax层
作用:将一个神经网络的输出变成一个概率分布。原始的输出被用作置信度来生成新的输出,这个输出满足概率分布的所有要求。这个概率可以理解为,经过神经网络的推导,一个样例以不同类别的输出概率分别是多大。这个概率分布可以直接通过计算交叉熵来计算预测概率分布和真实答案概率之间的距离。
所以在1中介绍的损失函数的y和y_应该是经过softmax之后的值。代表着概率分布。
2 损失函数的定义 用来刻画预测值与真实值之间的差异
2.1 对于分类问题 交叉熵
cross_entropy = -tf.reduce_mean(y_ * tf.log(tf.clip_by_value(y,1e-10,1.0)))
其中 tf.reduce_mean 代表求均值
tf.clip_by_value代表给y设定值域范围
y_ 代表真实值 y代表预测值 y和y_应该是经过softmax之后的值。代表着概率分布。
2.2 对于分类问题 tf.nn.softmax_cross_entropy_with_logits( y,y_ )
交叉熵和损失函数进行统一封装。这里的y y_代表着原始的网络输出 并不是经过softmax之后的概率分布
tf.nn.softmax_cross_entropy_with_logits( y, y_ )
2.3 对于回归问题 直接求偏差
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction), reduction_indices=[1]))
回归问题就是指只有一个输出节点,输出节点就是预测值,比如房价预测,销量预测。
上面loss求解来预测和真实值之间的平均偏差
求均方误差
loss = tf.reduce_mean(tf.squre(y_ - y))
3 优化算法 反向传播的优化算法
learning_rate = 0.001
train_step = tf.train.AdamOptimizer(learning_rate).minimize(cross_entropy)
常见的优化算法还有
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)