## 小白学Tensorflow之多层神经网络 转

AllenOR灵感

``````# 定义输入层到第一个隐藏层之间的连接矩阵
w_layer_1 = init_weights([784, 625])

# 定义第一个隐藏层到第二个隐藏层之间的连接矩阵
w_layer_2 = init_weights([625, 625])

# 定义第二个隐藏层到输出层之间的连接矩阵
w_layer_3 = init_weights([625, 10])``````

``````def model(X, w_layer_1, w_layer_2, w_layer_3, p_keep_input, p_keep_hidden):
X = tf.nn.dropout(X, p_keep_input)
hidden_1 = tf.nn.relu(tf.matmul(X, w_layer_1))
hidden_1 = tf.nn.dropout(hidden_1, p_keep_hidden)
hidden_2 = tf.nn.relu(tf.matmul(hidden_1, w_layer_2))
hidden_2 = tf.nn.dropout(hidden_2, p_keep_hidden)
return tf.matmul(hidden_2, w_layer_3)``````

``````#!/usr/bin/env python
# -*- coding: utf-8 -*-

import numpy as np
import tensorflow as tf
import input_data

def init_weights(shape):
return tf.Variable(tf.random_normal(shape, stddev = 0.01))

def model(X, w_layer_1, w_layer_2, w_layer_3, p_keep_input, p_keep_hidden):
X = tf.nn.dropout(X, p_keep_input)
hidden_1 = tf.nn.relu(tf.matmul(X, w_layer_1))

hidden_1 = tf.nn.dropout(hidden_1, p_keep_hidden)
hidden_2 = tf.nn.relu(tf.matmul(hidden_1, w_layer_2))

hidden_2 = tf.nn.dropout(hidden_2, p_keep_hidden)

return tf.matmul(hidden_2, w_layer_3)

# 导入数据
trX, trY, teX, teY = mnist.train.images, mnist.train.labels, mnist.test.images, mnist.test.labels

X = tf.placeholder("float", [None, 784])
Y = tf.placeholder("float", [None, 10])

# 在该模型中我们一共有4层，一个输入层，两个隐藏层，一个输出层
# 定义输入层到第一个隐藏层之间的连接矩阵
w_layer_1 = init_weights([784, 625])

# 定义第一个隐藏层到第二个隐藏层之间的连接矩阵
w_layer_2 = init_weights([625, 625])

# 定义第二个隐藏层到输出层之间的连接矩阵
w_layer_3 = init_weights([625, 10])

# dropout 系数
# 定义有多少有效的神经元将作为输入神经元，比如 p_keep_intput = 0.8，那么只有80%的神经元将作为输入
p_keep_input = tf.placeholder("float")

# 定义有多少的有效神经元将在隐藏层被激活
p_keep_hidden = tf.placeholder("float")

# 构建模型
py_x = model(X, w_layer_1, w_layer_2, w_layer_3, p_keep_input, p_keep_hidden)

cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(py_x, Y))
train_op = tf.train.RMSPropOptimizer(0.001, 0.9).minimize(cost)
predict_op = tf.argmax(py_x, 1)

with tf.Session() as sess:

init = tf.initialize_all_variables()
sess.run(init)

for i in xrange(100):
for start, end in zip(range(0, len(trX), 128), range(128, len(trX), 128)):
sess.run(train_op, feed_dict = {X: trX[start:end], Y: trY[start:end],
p_keep_input: 0.8, p_keep_hidden: 0.5})
print i, np.mean(np.argmax(teY, axis = 1) == sess.run(predict_op,
feed_dict = {X: teX, Y: teY, p_keep_input: 1.0, p_keep_hidden: 1.0}))``````

### AllenOR灵感

Tensorflow入门——卷积神经网络MNIST手写数字识别

Image source: unsplash.com by Paweł Czerwiński 之前的文章我们介绍了如何用单层和多的 全连接层神经网络识别手写数字，虽然识别率能够达到98%，但是由于全链接神经网络本身的局限性，其...

Hongtao洪滔
04/02
0
0
Tensorflow入门——多层神经网络MNIST手写数字识别

Image source: unsplash.com by Sergey Pesterev 上一篇文章中，我们用Tensorflow搭建了单层神经网络，该网络对MNIST手写识别率能到达90%。如何进一步提高识别率呢？Let's go deeper, 搭建更...

Hongtao洪滔
03/31
0
0

《Tensorflow基础快速入门》课程的目的是帮助广大的深度学习爱好者，逐层深入，步步精通当下最流行的深度学习框架Tensorflow。该课程包含Tensorflow运行原理，Tensor上面常见的操作，常见API...

liwei2000
2018/07/05
79
0

csdnsevenn
2018/05/03
0
0
GitHub超过2600星的TensorFlow教程，简洁清晰还不太难丨资源

2018/10/18
0
0

PostgreSQL参数search_path影响及作用

search_path稍微熟悉PG就会用到，用法这里就不必讲，本篇主要讲它在程序里怎样处理。 1、GUC参数定义 这是个 config_string 参数 {{"search_path", PGC_USERSET, CLIENT_CONN_STATEMENT,...

8
0
Qt程序各个平台打包发布及安装程序大全

shzwork

4
0
springboot2.0 maven打包分离lib，resources

springboot将工程打包成jar包后，会出现获取classpath下的文件出现测试环境正常而生产环境文件找不到的问题，这是因为 1、在调试过程中，文件是真实存在于磁盘的某个目录。此时通过获取文件路...

22
0
BootStrap

wytao1995

10
0

18
0