国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - tensorflow學習筆記之mnist的卷積神經網絡實例

tensorflow學習筆記之mnist的卷積神經網絡實例

2021-01-31 00:30denny402 Python

這篇文章主要為大家詳細介紹了tensorflow學習筆記之mnist的卷積神經網絡實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下

mnist卷積神經網絡例子和上一篇博文中的神經網絡例子大部分是相同的。但是CNN層數要多一些,網絡模型需要自己來構建。

程序比較復雜,我就分成幾個部分來敘述。

首先,下載并加載數據:

?
1
2
3
4
5
import tensorflow as tf
import tensorflow.examples.tutorials.mnist.input_data as input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)   #下載并加載mnist數據
x = tf.placeholder(tf.float32, [None, 784])            #輸入的數據占位符
y_actual = tf.placeholder(tf.float32, shape=[None, 10])      #輸入的標簽占位符

定義四個函數,分別用于初始化權值W,初始化偏置項b, 構建卷積層和構建池化層。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#定義一個函數,用于初始化所有的權值 W
def weight_variable(shape):
 initial = tf.truncated_normal(shape, stddev=0.1)
 return tf.Variable(initial)
 
#定義一個函數,用于初始化所有的偏置項 b
def bias_variable(shape):
 initial = tf.constant(0.1, shape=shape)
 return tf.Variable(initial)
 
#定義一個函數,用于構建卷積層
def conv2d(x, W):
 return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')
 
#定義一個函數,用于構建池化層
def max_pool(x):
 return tf.nn.max_pool(x, ksize=[1, 2, 2, 1],strides=[1, 2, 2, 1], padding='SAME')

接下來構建網絡。整個網絡由兩個卷積層(包含激活層和池化層),一個全連接層,一個dropout層和一個softmax層組成。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#構建網絡
x_image = tf.reshape(x, [-1,28,28,1])     #轉換輸入數據shape,以便于用于網絡中
W_conv1 = weight_variable([5, 5, 1, 32])  
b_conv1 = bias_variable([32])   
h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1)   #第一個卷積層
h_pool1 = max_pool(h_conv1)                 #第一個池化層
 
W_conv2 = weight_variable([5, 5, 32, 64])
b_conv2 = bias_variable([64])
h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2) + b_conv2)   #第二個卷積層
h_pool2 = max_pool(h_conv2)                  #第二個池化層
 
W_fc1 = weight_variable([7 * 7 * 64, 1024])
b_fc1 = bias_variable([1024])
h_pool2_flat = tf.reshape(h_pool2, [-1, 7*7*64])       #reshape成向量
h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat, W_fc1) + b_fc1)  #第一個全連接層
 
keep_prob = tf.placeholder("float")
h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob)         #dropout層
 
W_fc2 = weight_variable([1024, 10])
b_fc2 = bias_variable([10])
y_predict=tf.nn.softmax(tf.matmul(h_fc1_drop, W_fc2) + b_fc2)  #softmax層

網絡構建好后,就可以開始訓練了。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cross_entropy = -tf.reduce_sum(y_actual*tf.log(y_predict))   #交叉熵
train_step = tf.train.GradientDescentOptimizer(1e-3).minimize(cross_entropy)  #梯度下降法
correct_prediction = tf.equal(tf.argmax(y_predict,1), tf.argmax(y_actual,1)) 
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))         #精確度計算
sess=tf.InteractiveSession()            
sess.run(tf.initialize_all_variables())
for i in range(20000):
 batch = mnist.train.next_batch(50)
 if i%100 == 0:         #訓練100次,驗證一次
  train_acc = accuracy.eval(feed_dict={x:batch[0], y_actual: batch[1], keep_prob: 1.0})
  print 'step %d, training accuracy %g'%(i,train_acc)
  train_step.run(feed_dict={x: batch[0], y_actual: batch[1], keep_prob: 0.5})
 
test_acc=accuracy.eval(feed_dict={x: mnist.test.images, y_actual: mnist.test.labels, keep_prob: 1.0})
print "test accuracy %g"%test_acc

Tensorflow依賴于一個高效的C++后端來進行計算。與后端的這個連接叫做session。一般而言,使用TensorFlow程序的流程是先創建一個圖,然后在session中啟動它。

這里,我們使用更加方便的InteractiveSession類。通過它,你可以更加靈活地構建你的代碼。它能讓你在運行圖的時候,插入一些計算圖,這些計算圖是由某些操作(operations)構成的。這對于工作在交互式環境中的人們來說非常便利,比如使用IPython。

訓練20000次后,再進行測試,測試精度可以達到99%。

完整代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# -*- coding: utf-8 -*-
"""
Created on Thu Sep 8 15:29:48 2016
 
@author: root
"""
import tensorflow as tf
import tensorflow.examples.tutorials.mnist.input_data as input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)   #下載并加載mnist數據
x = tf.placeholder(tf.float32, [None, 784])            #輸入的數據占位符
y_actual = tf.placeholder(tf.float32, shape=[None, 10])      #輸入的標簽占位符
 
#定義一個函數,用于初始化所有的權值 W
def weight_variable(shape):
 initial = tf.truncated_normal(shape, stddev=0.1)
 return tf.Variable(initial)
 
#定義一個函數,用于初始化所有的偏置項 b
def bias_variable(shape):
 initial = tf.constant(0.1, shape=shape)
 return tf.Variable(initial)
 
#定義一個函數,用于構建卷積層
def conv2d(x, W):
 return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')
 
#定義一個函數,用于構建池化層
def max_pool(x):
 return tf.nn.max_pool(x, ksize=[1, 2, 2, 1],strides=[1, 2, 2, 1], padding='SAME')
 
#構建網絡
x_image = tf.reshape(x, [-1,28,28,1])     #轉換輸入數據shape,以便于用于網絡中
W_conv1 = weight_variable([5, 5, 1, 32])  
b_conv1 = bias_variable([32])   
h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1)   #第一個卷積層
h_pool1 = max_pool(h_conv1)                 #第一個池化層
 
W_conv2 = weight_variable([5, 5, 32, 64])
b_conv2 = bias_variable([64])
h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2) + b_conv2)   #第二個卷積層
h_pool2 = max_pool(h_conv2)                  #第二個池化層
 
W_fc1 = weight_variable([7 * 7 * 64, 1024])
b_fc1 = bias_variable([1024])
h_pool2_flat = tf.reshape(h_pool2, [-1, 7*7*64])       #reshape成向量
h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat, W_fc1) + b_fc1)  #第一個全連接層
 
keep_prob = tf.placeholder("float")
h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob)         #dropout層
 
W_fc2 = weight_variable([1024, 10])
b_fc2 = bias_variable([10])
y_predict=tf.nn.softmax(tf.matmul(h_fc1_drop, W_fc2) + b_fc2)  #softmax層
 
cross_entropy = -tf.reduce_sum(y_actual*tf.log(y_predict))   #交叉熵
train_step = tf.train.GradientDescentOptimizer(1e-3).minimize(cross_entropy)  #梯度下降法
correct_prediction = tf.equal(tf.argmax(y_predict,1), tf.argmax(y_actual,1)) 
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))         #精確度計算
sess=tf.InteractiveSession()            
sess.run(tf.initialize_all_variables())
for i in range(20000):
 batch = mnist.train.next_batch(50)
 if i%100 == 0:         #訓練100次,驗證一次
  train_acc = accuracy.eval(feed_dict={x:batch[0], y_actual: batch[1], keep_prob: 1.0})
  print('step',i,'training accuracy',train_acc)
  train_step.run(feed_dict={x: batch[0], y_actual: batch[1], keep_prob: 0.5})
 
test_acc=accuracy.eval(feed_dict={x: mnist.test.images, y_actual: mnist.test.labels, keep_prob: 1.0})
print("test accuracy",test_acc)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/denny402/p/5853538.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品日本欧美一区二区三区 | 伊人伊人伊人 | av在线入口 | 亚洲欧美中文字幕 | 欧美日韩视频在线 | 亚洲va欧美va天堂v国产综合 | 午夜视频网站 | 亚洲五码在线 | 亚洲欧美高清 | 国产一区二区视频在线观看 | 精精国产xxxx视频在线野外 | 不卡视频在线 | 精品网 | 日韩欧美一区二区在线观看 | 久久噜噜噜精品国产亚洲综合 | 国产免费自拍 | 欧美在线资源 | 久久久久久亚洲一区二区三区蜜臀 | 日本久久久久久 | 亚洲成人精品在线观看 | 999精品嫩草久久久久久99 | 国产中文视频 | 日本a v在线播放 | 99在线视频精品 | 日韩三级高清 | 亚州av | 色香蕉久久 | 成人影音| 五月婷婷在线视频 | 亚洲一区二区精品在线观看 | 亚洲 在线| 成人免费黄色 | 久久免费精品视频 | 91精品国产乱码久久久久久 | 久久亚洲欧美日韩精品专区 | 日韩在线成人 | 伊人草| 欧美a视频| 欧美国产日韩一区 | www欧美 | 久久久久久国产精品 |