用tensorflow搭建CNN的方法-創(chuàng)新互聯(lián)

CNN(Convolutional Neural Networks) 卷積神經(jīng)網(wǎng)絡(luò)簡(jiǎn)單講就是把一個(gè)圖片的數(shù)據(jù)傳遞給CNN,原涂層是由RGB組成,然后CNN把它的厚度加厚,長(zhǎng)寬變小,每做一層都這樣被拉長(zhǎng),最后形成一個(gè)分類器

創(chuàng)新互聯(lián)公司是一家專注于成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),鳳岡網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:鳳岡等地區(qū)。鳳岡做網(wǎng)站價(jià)格咨詢:13518219792

用tensorflow搭建CNN的方法

在 CNN 中有幾個(gè)重要的概念:

  1. stride
  2. padding
  3. pooling

stride,就是每跨多少步抽取信息。每一塊抽取一部分信息,長(zhǎng)寬就縮減,但是厚度增加。抽取的各個(gè)小塊兒,再把它們合并起來(lái),就變成一個(gè)壓縮后的立方體。

padding,抽取的方式有兩種,一種是抽取后的長(zhǎng)和寬縮減,另一種是抽取后的長(zhǎng)和寬和原來(lái)的一樣。

pooling,就是當(dāng)跨步比較大的時(shí)候,它會(huì)漏掉一些重要的信息,為了解決這樣的問(wèn)題,就加上一層叫pooling,事先把這些必要的信息存儲(chǔ)起來(lái),然后再變成壓縮后的層

利用tensorflow搭建CNN,也就是卷積神經(jīng)網(wǎng)絡(luò)是一件很簡(jiǎn)單的事情,筆者按照官方教程中使用MNIST手寫數(shù)字識(shí)別為例展開(kāi)代碼,整個(gè)程序也基本與官方例程一致,不過(guò)在比較容易迷惑的地方加入了注釋,有一定的機(jī)器學(xué)習(xí)或者卷積神經(jīng)網(wǎng)絡(luò)制式的人都應(yīng)該可以迅速領(lǐng)會(huì)到代碼的含義。

#encoding=utf-8 
import tensorflow as tf  
import numpy as np  
from tensorflow.examples.tutorials.mnist import input_data  
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)  
def weight_variable(shape): 
  initial = tf.truncated_normal(shape,stddev=0.1) #截?cái)嗾龖B(tài)分布,此函數(shù)原型為尺寸、均值、標(biāo)準(zhǔn)差 
  return tf.Variable(initial) 
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') # strides第0位和第3為一定為1,剩下的是卷積的橫向和縱向步長(zhǎng) 
def max_pool_2x2(x): 
  return tf.nn.max_pool(x,ksize = [1,2,2,1],strides=[1,2,2,1],padding='SAME')# 參數(shù)同上,ksize是池化塊的大小 
 
x = tf.placeholder("float", shape=[None, 784]) 
y_ = tf.placeholder("float", shape=[None, 10]) 
 
# 圖像轉(zhuǎn)化為一個(gè)四維張量,第一個(gè)參數(shù)代表樣本數(shù)量,-1表示不定,第二三參數(shù)代表圖像尺寸,最后一個(gè)參數(shù)代表圖像通道數(shù) 
x_image = tf.reshape(x,[-1,28,28,1]) 
 
# 第一層卷積加池化 
w_conv1 = weight_variable([5,5,1,32]) # 第一二參數(shù)值得卷積核尺寸大小,即patch,第三個(gè)參數(shù)是圖像通道數(shù),第四個(gè)參數(shù)是卷積核的數(shù)目,代表會(huì)出現(xiàn)多少個(gè)卷積特征 
b_conv1 = bias_variable([32]) 
 
h_conv1 = tf.nn.relu(conv2d(x_image,w_conv1)+b_conv1) 
h_pool1 = max_pool_2x2(h_conv1) 
 
# 第二層卷積加池化  
w_conv2 = weight_variable([5,5,32,64]) # 多通道卷積,卷積出64個(gè)特征 
b_conv2 = bias_variable([64]) 
 
h_conv2 = tf.nn.relu(conv2d(h_pool1,w_conv2)+b_conv2) 
h_pool2 = max_pool_2x2(h_conv2) 
 
# 原圖像尺寸28*28,第一輪圖像縮小為14*14,共有32張,第二輪后圖像縮小為7*7,共有64張 
 
w_fc1 = weight_variable([7*7*64,1024]) 
b_fc1 = bias_variable([1024]) 
 
h_pool2_flat = tf.reshape(h_pool2,[-1,7*7*64]) # 展開(kāi),第一個(gè)參數(shù)為樣本數(shù)量,-1未知 
f_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat,w_fc1)+b_fc1) 
 
# dropout操作,減少過(guò)擬合 
keep_prob = tf.placeholder(tf.float32) 
h_fc1_drop = tf.nn.dropout(f_fc1,keep_prob) 
 
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) 
 
cross_entropy = -tf.reduce_sum(y_*tf.log(y_conv)) # 定義交叉熵為loss函數(shù) 
train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy) # 調(diào)用優(yōu)化器優(yōu)化 
correct_prediction = tf.equal(tf.argmax(y_conv,1), tf.argmax(y_,1)) 
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float")) 
 
sess = tf.InteractiveSession() 
sess.run(tf.initialize_all_variables()) 
for i in range(2000): 
 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 %g"%(i, train_accuracy) 
 train_step.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5}) 
 
print "test accuracy %g"%accuracy.eval(feed_dict={x: mnist.test.images[0:500], y_: mnist.test.labels[0:500], keep_prob: 1.0}) 

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

新聞標(biāo)題:用tensorflow搭建CNN的方法-創(chuàng)新互聯(lián)
URL分享:http://muchs.cn/article48/dhgehp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)、網(wǎng)站建設(shè)、網(wǎng)站改版、全網(wǎng)營(yíng)銷推廣、外貿(mào)建站品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)