卷積神經網路 簡單實現案例

2021-09-26 14:23:37 字數 1837 閱讀 4258

'''隨機產生乙個輸入資料

'''# 輸入資料:(1,32,32,1):(輸入一張圖,高度32,寬度32,通道數為1)

input_data = np.random.randn(32,32).reshape(1,32,32,1)

'''第一層卷積

'''# 卷積核,(5,5,1,8):(高度5,寬度5,通道數1,輸出卷積核個數8)

filter_ = np.random.randn(5,5,8).reshape(5,5,1,8)

# 第一層卷積,(1,1,1,1):(1,高度方向移動步長,寬度方向移動步長),'v':不會自動補零

conv = tf.nn.conv2d(input=input_data,filter=filter_,strides=[1,1,1,1],padding='valid')

# 池化,(1,2,2,1):(1,池化核高度,池化核寬度,1),(1,2,2,1):(高度方向移動步長,寬度方向移動步長),'s':自動補零

pool = tf.nn.max_pool(conv,ksize=[1,2,2,1],strides=[1,2,2,1],padding='same')

# 啟用

relu = tf.nn.relu(pool)

# dropout 保留60%連線

dropout = tf.nn.dropout(relu,keep_prob=0.6)

'''第二層卷積

'''# 卷積核

filter2 = np.random.randn(5,5,8,20)

conv2 = tf.nn.conv2d(input=dropout,filter=filter2,strides=[1,1,1,1],padding='valid')

# 池化

pool2 = tf.nn.max_pool(conv2,ksize=[1,2,2,1],strides=[1,2,2,1],padding='same')

# 啟用

sigmod = tf.nn.sigmoid(pool2)

# dropout

dropout2 = tf.nn.dropout(pool2,keep_prob=0.5)

'''全連線層

'''# 權重

dense = np.random.randn(500,120)

fc = tf.reshape(dropout2,shape=[1,5*5*20])

# 相乘

conn = tf.matmul(fc,dense)

# 輸出層

w = np.random.randn(120,9)

b = np.random.randn(9)

out = tf.matmul(conn,w)+b

print(out)

with tf.session() as sess:

print(sess.run(out))

tensor("add:0", shape=(1, 9), dtype=float64)

[[ 56292.23092699 -25663.07097064  10046.3161544  -10689.08116037

95927.7495999   31923.13009604 -29105.7761752   76256.49429168

49508.435624  ]]

神經網路 卷積神經網路

這篇卷積神經網路是前面介紹的多層神經網路的進一步深入,它將深度學習的思想引入到了神經網路當中,通過卷積運算來由淺入深的提取影象的不同層次的特徵,而利用神經網路的訓練過程讓整個網路自動調節卷積核的引數,從而無監督的產生了最適合的分類特徵。這個概括可能有點抽象,我盡量在下面描述細緻一些,但如果要更深入了...

神經網路 卷積神經網路

1.卷積神經網路概覽 來自吳恩達課上一張,通過對應位置相乘求和,我們從左邊矩陣得到了右邊矩陣,邊緣是白色寬條,當畫素大一些時候,邊緣就會變細。觀察卷積核,左邊一列權重高,右邊一列權重低。輸入,左邊的部分明亮,右邊的部分灰暗。這個學到的邊緣是權重大的寬條 都是30 表示是由亮向暗過渡,下面這個圖左邊暗...

卷積神經網路 有趣的卷積神經網路

一 前言 最近一直在研究深度學習,聯想起之前所學,感嘆數學是一門樸素而神奇的科學。f g m1 m2 r 萬有引力描述了宇宙星河運轉的規律,e mc 描述了恆星發光的奧秘,v h d哈勃定律描述了宇宙膨脹的奧秘,自然界的大部分現象和規律都可以用數學函式來描述,也就是可以求得乙個函式。神經網路 簡單又...