91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 11.06MB
    文件類型: .gz
    金幣: 1
    下載: 0 次
    發布日期: 2023-07-22
  • 語言: 其他
  • 標簽: CNN??MNIST??深度學習??

資源簡介

完整的MNIST CNN手寫體識別數據集加代碼,深度學習入門好資源!

資源截圖

代碼片段和文件信息

from?tensorflow.examples.tutorials.mnist?import?input_data
import?tensorflow?as?tf
#加載數據集
mnist?=?input_data.read_data_sets(‘MNIST_data‘?one_hot=True)

#以交互式方式啟動session
#如果不使用交互式session,則在啟動session前必須
#?構建整個計算圖,才能啟動該計算圖
sess?=?tf.InteractiveSession()

“““構建計算圖“““
#通過占位符來為輸入圖像和目標輸出類別創建節點
#shape參數是可選的,有了它tensorflow可以自動捕獲維度不一致導致的錯誤
x?=?tf.placeholder(“float“?shape=[None?784])?#原始輸入
y_?=?tf.placeholder(“float“?shape=[None?10])?#目標值

#為了不在建立模型的時候反復做初始化操作,
#?我們定義兩個函數用于初始化
def?weight_variable(shape):
????#截尾正態分布stddev是正態分布的標準偏差
????initial?=?tf.truncated_normal(shape=shape?stddev=0.1)
????return?tf.Variable(initial)
def?bias_variable(shape):
????initial?=?tf.constant(0.1?shape=shape)
????return?tf.Variable(initial)

#卷積核池化步長為10邊距
def?conv2d(x?W):
????return?tf.nn.conv2d(x?W?strides=[1?1?1?1]?padding=‘SAME‘)
def?max_pool_2x2(x):
????return?tf.nn.max_pool(x?ksize=[1?2?2?1]
??????????????????????????strides=[1?2?2?1]?padding=‘SAME‘)

“““第一層卷積“““
#由一個卷積和一個最大池化組成。濾波器5x5中算出32個特征,是因為使用32個濾波器進行卷積
#卷積的權重張量形狀是[5?5?1?32]1是輸入通道的個數,32是輸出通道個數
W_conv1?=?weight_variable([5?5?1?32])
#每一個輸出通道都有一個偏置量
b_conv1?=?bias_variable([32])

#位了使用卷積,必須將輸入轉換成4維向量,2、3維表示圖片的寬、高
#最后一維表示圖片的顏色通道(因為是灰度圖像所以通道數維1,RGB圖像通道數為3)
x_image?=?tf.reshape(x?[-1?28?28?1])

#第一層的卷積結果使用Relu作為激活函數
h_conv1?=?tf.nn.relu(conv2d(x_image?W_conv1))
#第一層卷積后的池化結果
h_pool1?=?max_pool_2x2(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_2x2(h_conv2)

“““全連接層“““
#圖片尺寸減小到7*7,加入一個有1024個神經元的全連接層
W_fc1?=?weight_variable([7*7*64?1024])
b_fc1?=?bias_variable([1024])
#將最后的池化層輸出張量reshape成一維向量
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減少過擬合“““
#使用placeholder占位符來表示神經元的輸出在dropout中保持不變的概率
#在訓練的過程中啟用dropout,在測試過程中關閉dropout
keep_prob?=?tf.placeholder(“float“)
h_fc1_drop?=?tf.nn.dropout(h_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))

#模型訓練使用AdamOptimizer來做梯度最速下降
train_step?=?tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)

#正確預測得到True或False的List
correct_prediction?=?tf.equal(tf.argmax(y_?1)?tf.argmax(y_conv?1))
#將布爾值轉化成浮點數,取平均值作為精確度
accuracy?=?tf.reduce_mean(tf.cast(correct_prediction?“float“))

#在session中先初始化變量才能在session中調用
sess.run(tf.initialize_all_variables())

#迭代優化模型
for?i?in?range(20000):
????#每次取50個樣本進行訓練
????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})?#模型中間不使用dropout
????????print(“step?%d?training?accuracy?%g“?%?(i?train_accuracy))
????train_step.run(feed_dict={x:batch[0]?y_:batch[1]

評論

共有 條評論