tensorflow学习(四)设置两层神经网络对mnist数据进行十分类
2019-05-21 20:37
441 查看
import numpy as np import tensorflow as tf from tensorflow.examples.tutorials import input_data mnist = input_data.read_data_sets('data/', one_hot= True) #定义神经网络各层的神经元数量 hidden1 = 256 hidden2 = 128 num_input = 784 num_output = 10 #设置输出和输入 x = tf.placeholder('float' , [None,num_input]) y = tf.placeholder('float', [None, num_output]) #初始化权重 std = 0.1 w = { 'w1': tf.Variable(tf.random.normal([num_input, hidden1],stddev=std)), 'w2': tf.Variable(tf.random.normal([hidden1, hidden2],stddev=std)), 'w3': tf.Variable(tf.random.normal([hidden2, num_output],stddev=std)) } b = { 'b1': tf.Variable(tf.random.normal([hidden1],stddev=std)), 'b2': tf.Variable(tf.random.normal([hidden2],stddev=std)), 'b3': tf.Variable(tf.random.normal([num_output],stddev=std)) } #定义网络 def Lnet(X, weight, biases): layer1 = tf.nn.sigmoid(tf.add(tf.matmul(X,weight['w1']),biases['b1'])) layer2 = tf.nn.sigmoid(tf.add(tf.matmul(layer1, weight['w2']), biases['b2'])) out1 = tf.matmul(layer2, weight['w3'])+biases['b3'] return out1 #定义反向误差传播 pre = Lnet(x, w, b) loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels= y, logits=pre)) optimizer = tf.train.GradientDescentOptimizer(0.001).minimize(loss) correct = tf.equal(tf.argmax(pre, 1), tf.argmax(y, 1)) accr = tf.reduce_mean(tf.cast(correct,'float')) init = tf.global_variables_initializer() batch_size =100 with tf.Session() as sess: sess.run(init) for epoch in range(20): avg_cost = 0 num_batch = int(mnist.train.num_examples/batch_size) for i in range(num_batch): batch_xs, batch_ys = mnist.train.next_batch(batch_size) sess.run(optimizer, feed_dict={x:batch_xs, y:batch_ys}) avg_cost += sess.run(loss, feed_dict={x:batch_xs, y:batch_ys}) avg_cost = avg_cost/num_batch if (epoch+1) %5 ==0: feeds_train = {x:batch_xs, y:batch_ys} feeds_test = {x:mnist.test.images, y: mnist.test.labels} train_acc = sess.run(accr, feed_dict=feeds_train) test_acc = sess.run(accr, feed_dict=feeds_test ) print('epoch %03d/%03d loss:%.9f train_acc:%.3f, test_acc:%.3f' %(epoch, 100,avg_cost,train_acc,test_acc))
相关文章推荐
- 构建一个简单的神经网络(又名多层感知器)来对MNIST数字数据集进行分类--学习笔记
- [学习笔记]人工智能-神经网络对数据进行分类,构建二维矩阵
- [学习笔记]人工智能-神经网络对数据进行分类-可视化
- 使用tensorflow利用神经网络分类识别MNIST手写数字数据集,转自随心1993
- tensorflow实现简单卷积网络进行mnist分类
- 神经网络学习入门(一) 模拟数据二分类
- tensorflow学习笔记之使用tensorflow进行MNIST分类(1)
- tensorflow 学习笔记(四) - mnist实例--用简单的神经网络来训练和测试
- MNIST数据集两层神经网络分类
- 使用Keras构建神经网络进行Mnist手写字体分类
- tensorflow学习笔记四:mnist实例--用简单的神经网络来训练和测试(MNIST For ML Beginners)
- tensorflow 学习专栏(四):使用tensorflow在mnist数据集上使用逻辑回归logistic Regression进行分类
- tensorflow搭建简单神经网络进行MNIST数据集分类
- 神经网络与深度学习 使用Python实现基于梯度下降算法的神经网络和自制仿MNIST数据集的手写数字分类可视化程序 web版本
- tensorflow学习笔记四:mnist实例--用简单的神经网络来训练和测试
- 利用tensorflow一步一步实现基于MNIST 数据集进行手写数字识别的神经网络,逻辑回归
- tensorflow 学习笔记7 普通神经网络实现mnist手写识别
- 神经网络与深度学习 1.6 使用Python实现基于梯度下降算法的神经网络和MNIST数据集的手写数字分类程序
- Tensorflow学习教程------利用卷积神经网络对mnist数据集进行分类_利用训练好的模型进行分类
- 对抗神经网络学习(一)——GAN实现mnist手写数字生成(tensorflow实现)