TensorFlow实现简单的全连接网络(十三)
2018-02-25 21:54
239 查看
TensorFlow实现简单的全连接网络
首先这里要实现的是一个两层的神经网络,输入层,然后两层的隐层,最后输出层。
使用的数据还是mnsit的手写数据集。
import tensorflow as tf
import tensorflow.examples.tutorials.mnist.input_data as input_data
import matplotlib.pyplot as plt
mnist = input_data.read_data_sets('data/' , one_hot=True)准备权值的格式和偏置值的格式:
n_hidden_1 = 256
n_hidden_2 = 128
n_input = 784
n_classes = 10
然后就是前向传播:
def multilayer(x , weights , biases):
layer_1 = tf.nn.sigmoid(tf.add(tf.matmul(x , weights['w1']) , biases['b1']))
layer_2 = tf.nn.sigmoid(tf.add(tf.matmul(layer_1 , weights['w2'] , biases['b2'])))
return tf.add(tf.matmul(layer_2 , weights['out']) , biases['out'])
pass加减这些要使用TensorFlow的方法。
pred = multilayer(x , weights , biases)
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred , labels=y))
optim = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(cost)
corr = tf.equal(tf.argmax(pred ,axis = 1) , tf.argmax(y , axis = 1))
acc = tf.reduce_mean(tf.cast(corr , tf.float32))
init = tf.global_variables_initializer()
bacth_size = 100
costs = []
sess = tf.Session()
sess.run(init)
for n in range(1000):
cost = 0
n_bacth = int(mnist.train.num_examples / bacth_size)
for i in n_bacth:
train_x , train_y = mnist.train.next_batch(bacth_size)
feeds = {x : train_x , y : train_y}
sess.run(optim , feed_dict = feeds)
cost += sess.run(cost , feed_dict = feeds)
cost /= n_bacth
if n % 10 == 0:
costs.append(cost)
test_x , test_y = mnist.test.next_batch(1000)
test_feeds = {x : test_x , y : test_y}
sess.run(acc , feed_dict = test_feeds)
plt.plot(range(len(costs)) , costs)
plt.show()接着就是进行计算,不同以往的就是损失函数使用了一个交叉熵函数来计算损失值,之前都是使用的均方差。其他的都是和上一篇差不多。
可以得到输出的loss函数:
计算测试数据的精确值可以得到:
最后迭代1000次得到的损失值最低是0.2821。测试数据准确率是95%
可以得到loss的曲线:
首先这里要实现的是一个两层的神经网络,输入层,然后两层的隐层,最后输出层。
使用的数据还是mnsit的手写数据集。
import tensorflow as tf
import tensorflow.examples.tutorials.mnist.input_data as input_data
import matplotlib.pyplot as plt
mnist = input_data.read_data_sets('data/' , one_hot=True)准备权值的格式和偏置值的格式:
n_hidden_1 = 256
n_hidden_2 = 128
n_input = 784
n_classes = 10
x = tf.placeholder("float", [None, n_input]) y = tf.placeholder("float", [None, n_classes])stddev = 0.1weights = { 'w1' : tf.Variable(tf.random_normal([n_input , n_hidden_1],stddev = stddev)), 'w2' : tf.Variable(tf.random_normal([n_hidden_1 , n_hidden_2],stddev = stddev)), 'out': tf.Variable(tf.random_normal([n_hidden_2 , n_classes] , stddev = stddev))}biases = { 'b1' : tf.Variable(tf.random_normal([n_hidden_1])), 'b2' : tf.Variable(tf.random_normal([n_hidden_2])), 'out': tf.Variable(tf.random_normal([n_classes]))}中间层设置256和128个神经元。x,y的值同样可以使用占位,也就是placeholder。
然后就是前向传播:
def multilayer(x , weights , biases):
layer_1 = tf.nn.sigmoid(tf.add(tf.matmul(x , weights['w1']) , biases['b1']))
layer_2 = tf.nn.sigmoid(tf.add(tf.matmul(layer_1 , weights['w2'] , biases['b2'])))
return tf.add(tf.matmul(layer_2 , weights['out']) , biases['out'])
pass加减这些要使用TensorFlow的方法。
pred = multilayer(x , weights , biases)
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred , labels=y))
optim = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(cost)
corr = tf.equal(tf.argmax(pred ,axis = 1) , tf.argmax(y , axis = 1))
acc = tf.reduce_mean(tf.cast(corr , tf.float32))
init = tf.global_variables_initializer()
bacth_size = 100
costs = []
sess = tf.Session()
sess.run(init)
for n in range(1000):
cost = 0
n_bacth = int(mnist.train.num_examples / bacth_size)
for i in n_bacth:
train_x , train_y = mnist.train.next_batch(bacth_size)
feeds = {x : train_x , y : train_y}
sess.run(optim , feed_dict = feeds)
cost += sess.run(cost , feed_dict = feeds)
cost /= n_bacth
if n % 10 == 0:
costs.append(cost)
test_x , test_y = mnist.test.next_batch(1000)
test_feeds = {x : test_x , y : test_y}
sess.run(acc , feed_dict = test_feeds)
plt.plot(range(len(costs)) , costs)
plt.show()接着就是进行计算,不同以往的就是损失函数使用了一个交叉熵函数来计算损失值,之前都是使用的均方差。其他的都是和上一篇差不多。
可以得到输出的loss函数:
计算测试数据的精确值可以得到:
最后迭代1000次得到的损失值最低是0.2821。测试数据准确率是95%
可以得到loss的曲线:
相关文章推荐
- windows下使用tensorflow简单实现CNN
- 简单神经网络TensorFlow实现
- tensorflow实现简单逻辑回归
- tensorflow简单实现卷积前向过程
- tensorflow:3)实现简单的卷积网络
- Android上实现一个简单的天气预报APP(十三) 导航ViewPager
- tensorflow学习笔记之简单自编码器实现
- 使用tensorflow实现全连接神经网络的简单示例,含源码
- TensorFlow实现简单MNIST
- TensorFlow入门,基本介绍,基本概念,计算图,pip安装,helloworld示例,实现简单的神经网络
- TensorFlow实现一个简单的线性回归预测
- TensorFlow简要教程系列(三)TensorFlow实现简单图像探索
- 使用tensorflow实现简单的多分类问题
- TensorFlow实现卷积神经网络(简单)
- 训练神经网络的简单例子(TensorFlow平台下Python实现)
- TensorFlow实现简单卷积网络
- tensorflow学习之路——实现简单的卷积网络
- 机器学习算法练习之(二):Python和Tensorflow分别实现简单的神经网络
- 使用TensorFlow实现简单的线性回归(LinearRegression)
- 【Tensorflow】实现简单的卷积神经网络CNN实际代码