神经网络判段多分类情况时,有几个类别就有几个输出神经元
图片中一个像素点就是一个特征
输出层输出数值,不会直接告诉你分类,通过softmax得出对应概率。 将正确结果经过one_hot编码与得出概率中最大处比较,可判断对错
算法 策略 优化
线性回归 均方误差 梯度下降
对数回归 对数似然损失 梯度下降
神经网络 交叉熵损失 梯度下降
交叉熵损失衡量softmax后结果数值与one_hot后结果数值的差异程度,
从mnist中取数据
from tensorflow .examples.tutorials.mnist import input_data
mnist=input_data.read_data_sets(FLAGS.data_dir, one_hot=True)
#输出[55000, 784] ,即展示所有样本的所有特征(像素)
mnist.train.image
#输出[550001 10], one_hot后标签值列表
mnist.train.labels
#从输出的特征值和标签值中按顺序各取50个样本
mnist.train.next_batch(50)
现在写出构建神经网络的逻辑框架
所谓特征[…,784], 目标值[…,10]
1.定义两个数据占位符,因为我们是训练过程中实传入数据
2.建立模型(随机初始化权重和偏置,每一个输出神经元都有一个偏置)
y_predict= tf.matmul(x, m)+b
3.计算损失(平均loss)
4.梯度下降
5.计算准确率(比较概率最大位置与one_hot中1的位置)
tf.argmax(y_true, 1) 这里1指的是[50, 10] 中10
现在开始写一个案列;
import tensorflow as tf
def full_connected():
#1.建立数据占位符, x[None, 784], y_true[None, 10]
with tf.variable_scop