import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' import tensorflow as tf import numpy as np from tensorflow.examples.tutorials.mnist import input_data #加载数据 mnist = input_data.read_data_sets('MNIST',one_hot=True) #加上每个批次的大小 batch_size11 = 100 #计算一共有多少个批次 n_batch = mnist.train.num_examples // batch_size11 #placeholder 数据的维度是784,最后变成10个分类 x = tf.placeholder(tf.float32,[None,784]) y = tf.placeholder(tf.float32,[None,10]) keep_prob = tf.placeholder(tf.float32) #定义一层的简单网络 # w = tf.Variable(tf.random_normal([784,10])) w = tf.Variable(tf.truncated_normal([784,10],stddev=0.1)) b = tf.Variable(tf.zeros([10])) predict = tf.nn.softmax(tf.add(tf.matmul(x,w),b)) L_dropout = tf.nn.dropout(predict,keep_prob) #损失函数 # loss = tf.reduce_mean(tf.square(y - predict)) loss = tf.nn.softmax_cross_entropy_with_logits(labels =y ,logits=L_dropout) #优化函数 train= tf.train.GradientDescentOptimizer(0.1).minimize(loss) #准确率计算 correct_prediction = tf.equal(tf.argmax(y,1),tf.argmax(predict,1)) acc = tf.reduce_mean(tf.cast(correct_prediction,tf.float32)) init = tf.global_variables_initializer() with tf.Session() as sess: sess.run(init) for epoch in range(21): for batch in range(n_batch): batch_xs11,batch_ys11 = mnist.train.num_examples(100) sess.run(train,feed_dict={x:batch_xs11,y:batch_ys11}) accc = sess.run(acc,feed_dict={x:mnist.test.images,y:mnist.test.labels}) print("epoch " + str(epoch) + ": acc "+ str(accc))