1、
softmax函数
2、
import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data #载入数据 mnist=input_data.read_data_sets('mnist_data',one_hot=True)#noe_hot把像素点都转变成0或1的形式 #每个批次的大小,训练模型时,一次放入一批次 batch_size=100 #一批次100张图 #计算一共有多少个批次 n_batch=mnist.train.num_examples//batch_size# //是整除,得到批次数 #定义两个placeholder x=tf.placeholder(tf.float32,[None,784])#建立一个占位符,None是图片数,784是每幅图的像素个数 y=tf.placeholder(tf.float32,[None,10])# 标签,建立一个占位符,10是指0-9十个数 #创建一个简单的神经网络,输入层784个神经元,输出层10个神经元,不设隐藏层 W=tf.Variable(tf.zeros([784,10]))#权值,设一个变量,置0 b=tf.Variable(tf.zeros([10]))#偏置值 prediction=tf.nn.softmax(tf.matmul(x,W)+b)#信号总和,经过softmax函数(激活函数)转化成概率值 #二次代价函数 loss =tf.reduce_mean(tf.square(y-prediction)) #使用梯度下降法 train_step=tf.train.GradientDescentOptimizer(0.2).minimize(loss) #初始化变量 init=tf.global_variables_initializer() #训练好后求准确率,结果存放在一个布尔型列表中,argmax返回一维张量中最大的值所在的位置 correct_prediction=tf.equal(tf.argmax(y,1),tf.argmax(prediction,1))#argmax函数是对行或列计算最大值,1表示按行,0表示按列,找到最大概率标签的位置。 equal函数是比较两个参数大小,相等的话返回True,不相等返回False #求准确率 accuracy=tf.reduce_mean(tf.cast(correct_prediction,tf.float32))#cast()是类型转换函数,把布尔型参数转换为32位古典型,然后求平均值。true变成1.0,flse变成0 #Boolean→数值型:True转换为-1,False转换为0。数值型→Boolean:0转换为False,其他转换为True with tf.Session() as sess: sess.run(init)#初始化变量 for epoch in range(21):#迭代21个周期,把所有图片训练21次 for batch in range(n_batch): batch_xs,batch_ys=mnist.train.next_batch(batch_size)#分配100张图片,图片数据保存在batch_xs,标签保存在batch_ys sess.run(train_step,feed_dict={x:batch_xs,y:batch_ys}) acc=sess.run(accuracy,feed_dict={x:mnist.test.images,y:mnist.test.labels}) print('Iter'+str(epoch)+',Testing Accuracy'+str(acc))
Iter0,Testing Accuracy0.8303
Iter1,Testing Accuracy0.8707
Iter2,Testing Accuracy0.8815
Iter3,Testing Accuracy0.8886
Iter4,Testing Accuracy0.8935
Iter5,Testing Accuracy0.8967
Iter6,Testing Accuracy0.9009
Iter7,Testing Accuracy0.9025
Iter8,Testing Accuracy0.9039
Iter9,Testing Accuracy0.905
Iter10,Testing Accuracy0.9058
Iter11,Testing Accuracy0.9069
Iter12,Testing Accuracy0.9083
Iter13,Testing Accuracy0.909
Iter14,Testing Accuracy0.9101
Iter15,Testing Accuracy0.911
Iter16,Testing Accuracy0.9115
Iter17,Testing Accuracy0.913
Iter18,Testing Accuracy0.9132
Iter19,Testing Accuracy0.9132
Iter20,Testing Accuracy0.9136