欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

TensorFlow實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)

 更新時(shí)間:2018年05月24日 10:57:10   作者:superman_xxx  
這篇文章主要為大家詳細(xì)介紹了TensorFlow實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了TensorFlow實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)的具體代碼,供大家參考,具體內(nèi)容如下

代碼(源代碼都有詳細(xì)的注釋)和數(shù)據(jù)集可以在github下載:

# -*- coding: utf-8 -*-
'''卷積神經(jīng)網(wǎng)絡(luò)測(cè)試MNIST數(shù)據(jù)'''

#########導(dǎo)入MNIST數(shù)據(jù)########
from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf
mnist = input_data.read_data_sets('MNIST_data/', one_hot=True)

# 創(chuàng)建默認(rèn)InteractiveSession
sess = tf.InteractiveSession()


#########卷積網(wǎng)絡(luò)會(huì)有很多的權(quán)重和偏置需要?jiǎng)?chuàng)建,先定義好初始化函數(shù)以便復(fù)用########
# 給權(quán)重制造一些隨機(jī)噪聲打破完全對(duì)稱(比如截?cái)嗟恼龖B(tài)分布噪聲,標(biāo)準(zhǔn)差設(shè)為0.1)
def weight_variable(shape):
 initial = tf.truncated_normal(shape, stddev=0.1)
 return tf.Variable(initial)
# 因?yàn)槲覀円褂肦eLU,也給偏置增加一些小的正值(0.1)用來避免死亡節(jié)點(diǎn)(dead neurons)
def bias_variable(shape):
 initial = tf.constant(0.1, shape=shape)
 return tf.Variable(initial)


########卷積層、池化層接下來重復(fù)使用的,分別定義創(chuàng)建函數(shù)########
# tf.nn.conv2d是TensorFlow中的2維卷積函數(shù)
def conv2d(x, W):
 return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')
# 使用2*2的最大池化
def max_pool_2x2(x):
 return tf.nn.max_pool(x, ksize=[1, 2, 2, 1],strides=[1, 2, 2, 1], padding='SAME')


########正式設(shè)計(jì)卷積神經(jīng)網(wǎng)絡(luò)之前先定義placeholder########
# x是特征,y_是真實(shí)label。將圖片數(shù)據(jù)從1D轉(zhuǎn)為2D。使用tensor的變形函數(shù)tf.reshape
x = tf.placeholder(tf.float32, shape=[None, 784])
y_ = tf.placeholder(tf.float32, shape=[None, 10])
x_image = tf.reshape(x,[-1,28,28,1])


########設(shè)計(jì)卷積神經(jīng)網(wǎng)絡(luò)########
# 第一層卷積
# 卷積核尺寸為5*5,1個(gè)顏色通道,32個(gè)不同的卷積核
W_conv1 = weight_variable([5, 5, 1, 32])
# 用conv2d函數(shù)進(jìn)行卷積操作,加上偏置
b_conv1 = bias_variable([32])
# 把x_image和權(quán)值向量進(jìn)行卷積,加上偏置項(xiàng),然后應(yīng)用ReLU激活函數(shù),
h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1)
# 對(duì)卷積的輸出結(jié)果進(jìn)行池化操作
h_pool1 = max_pool_2x2(h_conv1)

# 第二層卷積(和第一層大致相同,卷積核為64,這一層卷積會(huì)提取64種特征)
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_2x2(h_conv2)

# 全連接層。隱含節(jié)點(diǎn)數(shù)1024。使用ReLU激活函數(shù)
W_fc1 = weight_variable([7 * 7 * 64, 1024])
b_fc1 = bias_variable([1024])
h_pool2_flat = tf.reshape(h_pool2, [-1, 7*7*64])
h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat, W_fc1) + b_fc1)

# 為了防止過擬合,在輸出層之前加Dropout層
keep_prob = tf.placeholder(tf.float32)
h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob)

# 輸出層。添加一個(gè)softmax層,就像softmax regression一樣。得到概率輸出。
W_fc2 = weight_variable([1024, 10])
b_fc2 = bias_variable([10])
y_conv=tf.nn.softmax(tf.matmul(h_fc1_drop, W_fc2) + b_fc2)


########模型訓(xùn)練設(shè)置########
# 定義loss function為cross entropy,優(yōu)化器使用Adam,并給予一個(gè)比較小的學(xué)習(xí)速率1e-4
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_*tf.log(y_conv),reduction_indices=[1]))
train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)

# 定義評(píng)測(cè)準(zhǔn)確率的操作
correct_prediction = tf.equal(tf.argmax(y_conv,1), tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))


########開始訓(xùn)練過程########
# 初始化所有參數(shù)
tf.global_variables_initializer().run()

# 訓(xùn)練(設(shè)置訓(xùn)練時(shí)Dropout的kepp_prob比率為0.5。mini-batch為50,進(jìn)行2000次迭代訓(xùn)練,參與訓(xùn)練樣本5萬)
# 其中每進(jìn)行100次訓(xùn)練,對(duì)準(zhǔn)確率進(jìn)行一次評(píng)測(cè)keep_prob設(shè)置為1,用以實(shí)時(shí)監(jiān)測(cè)模型的性能
for i in range(1000):
 batch = mnist.train.next_batch(50)
 if i%100 == 0:
  train_accuracy = accuracy.eval(feed_dict={x:batch[0], y_: batch[1], keep_prob: 1.0})
  print "-->step %d, training accuracy %.4f"%(i, train_accuracy)
 train_step.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5})
# 全部訓(xùn)練完成之后,在最終測(cè)試集上進(jìn)行全面測(cè)試,得到整體的分類準(zhǔn)確率
print "卷積神經(jīng)網(wǎng)絡(luò)在MNIST數(shù)據(jù)集正確率: %g"%accuracy.eval(feed_dict={
  x: mnist.test.images, y_: mnist.test.labels, keep_prob: 1.0})

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • pytorch如何獲得模型的計(jì)算量和參數(shù)量

    pytorch如何獲得模型的計(jì)算量和參數(shù)量

    這篇文章主要介紹了pytorch如何獲得模型的計(jì)算量和參數(shù)量操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python練習(xí)之ORM框架

    Python練習(xí)之ORM框架

    這篇文章主要介紹了Python練習(xí)之ORM框架,通過使用SQLObject框架操作MySQL數(shù)據(jù)庫(kù)展開文章主題詳細(xì)內(nèi)容,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-06-06
  • 淺談PyTorch中in-place operation的含義

    淺談PyTorch中in-place operation的含義

    這篇文章主要介紹了淺談PyTorch中in-place operation的含義,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python?argparse庫(kù)的基本使用步驟

    Python?argparse庫(kù)的基本使用步驟

    argparse庫(kù)是python下的一個(gè)命令行參數(shù)管理庫(kù),支持int、str、float、bool、數(shù)組等5種基本數(shù)據(jù)類型,這篇文章主要介紹了Python?argparse庫(kù)的基本使用,需要的朋友可以參考下
    2022-07-07
  • Python實(shí)現(xiàn)矩陣轉(zhuǎn)置的幾種方法詳解

    Python實(shí)現(xiàn)矩陣轉(zhuǎn)置的幾種方法詳解

    這篇文章主要介紹了Python實(shí)現(xiàn)矩陣轉(zhuǎn)置的幾種方法詳解,zip() 函數(shù)用于將可迭代的對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)元組,然后返回由這些元組組成的對(duì)象,這樣做的好處是節(jié)約了不少的內(nèi)存,需要的朋友可以參考下
    2023-08-08
  • Python檢測(cè)一個(gè)對(duì)象是否為字符串類的方法

    Python檢測(cè)一個(gè)對(duì)象是否為字符串類的方法

    這篇文章主要介紹了Python檢測(cè)一個(gè)對(duì)象是否為字符串類的方法,即檢測(cè)是一個(gè)對(duì)象是否是字符串對(duì)象,本文還講解了一個(gè)有趣的判斷方法,需要的朋友可以參考下
    2015-05-05
  • python模塊的安裝以及安裝失敗的解決方法

    python模塊的安裝以及安裝失敗的解決方法

    Python 模塊(Module),是一個(gè) Python 文件,以 .py 結(jié)尾,包含了 Python 對(duì)象定義和Python語句。模塊讓你能夠有邏輯地組織你的 Python 代碼段。把相關(guān)的代碼分配到一個(gè)模塊里能讓你的代碼更好用,更易懂。模塊能定義函數(shù),類和變量,模塊里也能包含可執(zhí)行的代碼
    2021-11-11
  • 使用 Python 快速實(shí)現(xiàn) HTTP 和 FTP 服務(wù)器的方法

    使用 Python 快速實(shí)現(xiàn) HTTP 和 FTP 服務(wù)器的方法

    這篇文章主要介紹了使用 Python 快速實(shí)現(xiàn) HTTP 和 FTP 服務(wù)器 的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python3中zip()函數(shù)使用詳解

    python3中zip()函數(shù)使用詳解

    zip函數(shù)接受任意多個(gè)可迭代對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)tuple,然后返回一個(gè)可迭代的zip對(duì)象.這個(gè)可迭代對(duì)象可以使用循環(huán)的方式列出其元素,若多個(gè)可迭代對(duì)象的長(zhǎng)度不一致,則所返回的列表與長(zhǎng)度最短的可迭代對(duì)象相同.
    2018-06-06
  • Python批量刪除txt文本指定行的思路與代碼

    Python批量刪除txt文本指定行的思路與代碼

    在深度學(xué)習(xí)項(xiàng)目中常常會(huì)處理各種數(shù)據(jù)集,下面這篇文章主要給大家介紹了關(guān)于Python批量刪除txt文本指定行的思路與代碼,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02

最新評(píng)論