tensorflow入门学习,对前面几节,MINST手写数字识别的总结(五)
发表于: 2018-06-24 23:08:07 | 已被阅读: 15 | 分类于: tensorflow
在第二节,我们将 28x28 大小的图片拉成 784 的一维数据,这丢失了图片的二维结构方面的信息,在图片识别中,二维空间结构也是非常重要的信息。不过,对于第二节中的例子而言,因为模型非常简单,丢弃空间结构信息,可以简化问题。第三节的卷积网络,就充分利用了图片的二维空间结构信息。
softmax 线性回归(Regression)非常适合分类模型,它会对每一种类估算一个概率,例如在 MINST 手写数字识别中,预测数字 3 的概率为 0.87,数字 5 的概率为 0.18,那么显然该次识别结果是 3。当处理多分类任务时,通常使用 softmax 线性回归模型。即使是第三节中的卷积网络模型,最后全连接层时,也是softmax 线性回归。
softmax regression 工作原理非常简单,将可以判定为某类的特征全部加在一起,然后将这些特征转化为判定是这一类的概率(例如归一操作)。
tensorflow 常常是先建立模型,最后在 session 里执行训练等计算内容的。输入部分可以先用
...
x = tf.placeholder("float", [None, 784])
...
y_ = tf.placeholder("float", [None,10])
...
sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}) # feed 数据
网络模型的的权值和偏置,记忆着训练结果,在 tensorflow 中用
# 加入一点噪声是为了避免 0 梯度
def weight_variable(shape):
initial = tf.truncated_normal(shape, stddev=0.1)
return tf.Variable(initial)
# 使用一个较小正数初始化,可以避免神经元输出恒 0(死神经元)
def bias_variable(shape):
initial = tf.constant(0.1, shape=shape)
return tf.Variable(initial)
定义好训练网络后,需要指定 loss 函数,作为训练的依据。最后,再指定训练方式,如