import tensorflow as tf
import numpy as np
from tensorflow.examples.tutorials.mnist import input_data
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
mnist = input_data.read_data_sets("MNIST_data", one_hot=True)
batch_size = 100
n_batch = mnist.train.num_examples // batch_size
#命名空间
with tf.name_scope('input'):
x = tf.placeholder(tf.float32, [None, 784], name='x-input')
y = tf.placeholder(tf.float32, [None, 10], name='y-input')
keep_prob = tf.placeholder(tf.float32, name='keep_prob')
lr = tf.Variable(0.001, dtype=tf.float32, name='lr')
with tf.name_scope('layer1'):
with tf.name_scope('weights1'):
W1 = tf.Variable(tf.truncated_normal([784,500],stddev=0.1, name='W1'))
with tf.name_scope('biases1'):
b1 = tf.Variable(tf.zeros([500])+0.1, name='b1')
with tf.name_scope('L1'):
L1 = tf.nn.tanh(tf.matmul(x,W1)+b1, name="L1")
with tf.name_scope('dropout'):
L1_drop = tf.nn.dropout(L1, keep_prob, name='dropout1')
with tf.name_scope('layer2'):
with tf.name_scope("weight2"):
W2 = tf.Variable(tf.truncated_normal([500,300],stddev=0.1), name='W2')
with tf.name_scope('biases2'):
b2 = tf.Variable(tf.zeros([300])+0.1, name='b2')
with tf.name_scope('L2'):
L2 = tf.nn.tanh(tf.matmul(L1_drop,W2)+b2, name='L2')
with tf.name_scope('dropout'):
L2_drop = tf.nn.dropout(L2, keep_prob, name='dropout2')
with tf.name_scope('layer3'):
with tf.name_scope("weight3"):
W3 = tf.Variable(tf.truncated_normal([300,10],stddev=0.1), name='W3')
with tf.name_scope('biases3'):
b3 = tf.Variable(tf.zeros([10])+0.1, name='b3')
with tf.name_scope('L3'):
prediction = tf.nn.softmax(tf.matmul(L2_drop, W3) + b3, name='L3')
with tf.name_scope('loss'):
loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(labels=y, logits=prediction), name='loss') #logits预测值
with tf.name_scope('train'):
train_step = tf.train.AdamOptimizer(lr).minimize(loss)
with tf.name_scope('accuracy'):
with tf.name_scope("corrent_prediction"):
corrent_prediction =tf.equal(tf.argmax(y,1), tf.argmax(prediction, 1))
with tf.name_scope("accuracy"):
accuracy = tf.reduce_mean(tf.cast(corrent_prediction, tf.float32))
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
write = tf.summary.FileWriter('logs/',sess.graph) # params1 是路径,params2 是存放的图
for epoch in range(1):
sess.run(tf.assign(lr,0.001 * (0.95 ** epoch)))
for batch in range(n_batch):
batch_xs, batch_ys = mnist.train.next_batch(batch_size)
sess.run(train_step, feed_dict={x:batch_xs, y:batch_ys, keep_prob:1.0})
test_acc = sess.run(accuracy, feed_dict={x:mnist.test.images, y:mnist.test.labels, keep_prob:1.0})
train_acc = sess.run(accuracy, feed_dict={x:mnist.train.images, y:mnist.train.labels, keep_prob:1.0})
print('iter'+ str(epoch)+ ',Testing Accuracy' + str(test_acc),',Training Accuracy'+ str(train_acc))
E:>tensorboard --logdir=E:\logs\ ##这里不能有中文哦