日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 卷积神经网络 >内容正文

卷积神经网络

卷积神经网络CNN 手写数字识别

發布時間:2025/3/21 卷积神经网络 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 卷积神经网络CNN 手写数字识别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 知識點準備

在了解 CNN 網絡神經之前有兩個概念要理解,第一是二維圖像上卷積的概念,第二是 pooling 的概念。

a. 卷積

關于卷積的概念和細節可以參考這里,卷積運算有兩個非常重要特性,以下面這個一維的卷積為例子:

第一個特性是稀疏連接。可以看到, layer m 上的每一個節點都只與 layer m-1 對應區域的三個節點相連接。這個局部范圍也叫感受野。第二個特性是相同顏色的線條代表了相同的權重,即權重共享。這樣做有什么好處呢?一方面權重共享可以極大減小參數的數目,學習起來更加有效,另一方面,相同的權重可以讓過濾器不受圖像位置的影響來檢測圖像的特性,從而使 CNN 具有更強的泛化能力。

b. 池化

理論上,我們將圖像利用不同的過濾器通過卷積之后得到了多個卷積之后的圖像,然后直接利用這些圖像進行分類,但是這樣計算量太大了。利用池化操作可以將數據量減小,同時在一定程度上保留原有的圖像特征。關于 pooling, 概念更加簡單了,詳情可以參考這里。池化又可以分為平均池化和最大池化,這里我們將采用最大池化。注意到,池化的區域是不重疊的,卷積的感受野是重疊的。

2. 卷積神經網絡的搭建

下圖是手寫數字識別中采用的 lenet-5 簡單的卷積神經網絡模型:

  • 原圖是 28 × 28 的手寫數字圖片,通過第一次 20 個 5 × 5 的卷積核之后,得到 20 張卷積圖片。卷積核的權重是取一定范圍內的隨機值,這樣,一張 28 × 28 的圖片就變為 20 張 (28-5+1)× (28-5+1)=24×24 的圖片了。

  • 將 24×24 的圖片進行 2 × 2 的最大池化,得到 20 張 12 × 12 的圖片。該圖片的像素還需要進行 tanh 函數的變換才能作為下一個卷積層的輸入。

  • 將 tanh 變化之后的 12 × 12 大小的圖片同樣進行 20 × 50 個 5 × 5 的卷積操作之后得到 50 張 (12-5+1)× (12-5+1) = 8 × 8 的圖片。

  • 將 8×8 的圖片進行 2×2 的最大池化,得到 50 張 4×4 的圖片,再經過 tanh 函數進行歸一化處理,就可以作為 MLP 的 800 個輸入了。

  • 余下來就是 MLP 的訓練工作了。

  • 3. LR, MLP,CNN 識別代碼

    已經訓練好的模型系數的下載地址。

    三種方法識別手寫數字的代碼:

    import cPickleimport numpyimport theano import theano.tensor as T from theano.tensor.signal import downsample from theano.tensor.nnet import conv######################################## # define the classifer constructs ########################################class LogisticRegression(object):def __init__(self, input, W=None, b=None):if W is None:fle = open("../model_param/lr_sgd_best.pkl")W, b = cPickle.load(fle)fle.close()self.W = Wself.b = bself.outputs = T.nnet.softmax(T.dot(input, self.W) + b)self.pred = T.argmax(self.outputs, axis=1)class MLP(object):def __init__(self, input, params=None):if params is None:fle = open("../model_param/mlp_best.pkl")params = cPickle.load(fle)fle.close()self.hidden_W, self.hidden_b, self.lr_W, self.lr_b = paramsself.hiddenlayer = T.tanh(T.dot(input, self.hidden_W) + self.hidden_b)self.outputs = T.nnet.softmax(T.dot(self.hiddenlayer, self.lr_W) \+ self.lr_b)self.pred = T.argmax(self.outputs, axis=1)class CNN(object):def __init__(self, input, params=None):if params is None: fle = open("../model_param/cnn_best.pkl")params = cPickle.load(fle)fle.close()################self.layer3_W, self.layer3_b, self.layer2_W, self.layer2_b, \self.layer1_W, self.layer1_b, self.layer0_W, self.layer0_b = params# compute layer0 self.conv_out0 = conv.conv2d(input=input, filters=self.layer0_W) # filter_shape=(20, 1, 5, 5), image_shape=(1, 1, \ # 28, 28))self.pooled_out0 = downsample.max_pool_2d(input=self.conv_out0, \ds=(2, 2), ignore_border=True)self.layer0_output = T.tanh(self.pooled_out0 + \self.layer0_b.dimshuffle('x', 0, 'x', 'x'))# compute layer1 self.conv_out1 = conv.conv2d(input=self.layer0_output, filters=self.layer1_W) # filter_shape=(50, 20, 5, 5), image_shape=(1, 20, \ # 12, 12))self.pooled_out1 = downsample.max_pool_2d(input=self.conv_out1, \ds=(2, 2), ignore_border=True)self.layer1_output = T.tanh(self.pooled_out1 + \self.layer1_b.dimshuffle('x', 0, 'x', 'x'))# compute layer2self.layer2_input = self.layer1_output.flatten(2)self.layer2_output = T.tanh(T.dot(self.layer2_input, self.layer2_W) + \self.layer2_b)# compute layer3self.outputs = T.nnet.softmax(T.dot(self.layer2_output, self.layer3_W)\+ self.layer3_b)self.pred = T.argmax(self.outputs, axis=1)######################################## # build classifier ########################################def lr(input):input.shape = 1, -1x = T.fmatrix('x')classifer = LogisticRegression(input=x)get_p_y = theano.function(inputs=[x], outputs=classifer.outputs)pred_y = theano.function(inputs=[x], outputs=classifer.pred)return (get_p_y(input), pred_y(input))def mlp(input):input.shape = 1, -1x = T.fmatrix('x')classifer = MLP(input=x)get_p_y = theano.function(inputs=[x], outputs=classifer.outputs)pred_y = theano.function(inputs=[x], outputs=classifer.pred)return (get_p_y(input), pred_y(input))def cnn(input):input.shape = (1, 1, 28, 28)x = T.dtensor4('x')classifer = CNN(input=x)get_p_y = theano.function(inputs=[x], outputs=classifer.outputs)pred_y = theano.function(inputs=[x], outputs=classifer.pred)return (get_p_y(input), pred_y(input))

    ?

    from:http://www.cnblogs.com/daniel-D/

    總結

    以上是生活随笔為你收集整理的卷积神经网络CNN 手写数字识别的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 日本在线一级片 | 日本一区二区三区精品 | 日本亚洲最大的色成网站www | 欧美少妇激情 | 亚洲国产欧美在线人成 | 国产女人精品视频 | 国产欧美精品一区二区色综合朱莉 | 50部乳奶水在线播放 | 黑丝美女啪啪 | 狠狠躁夜夜躁人人爽视频 | 成人网在线视频 | 91麻豆精品一区二区三区 | 六月综合激情 | 全黄一级裸片视频 | 欧美日韩高清在线播放 | 制服丝袜国产精品 | 美女又黄又免费的视频 | 久久午夜精品人妻一区二区三区 | 久久久久亚洲av片无码下载蜜桃 | 久久精品3 | 精品66| 亚洲国产aⅴ成人精品无吗 日韩乱论 | 一色道久久88加勒比一 | 综合九九| xxx黄色片 | 亚洲欧美日韩国产一区 | 国产初高中真实精品视频 | 在线观看视频www | 男人av影院 | 日韩免费一区二区三区 | v天堂在线 | 黄色动漫在线免费观看 | 亚洲天堂久久久久 | 亚洲品质自拍视频 | 在线你懂的视频 | 国产suv精品一区二区68 | 亚洲精品成人片在线观看精品字幕 | 一级片亚洲 | 麻豆视频传媒入口 | 免费观看黄色的网站 | 黄色污小说 | 天堂免费在线视频 | 亚洲视频在线一区 | 日本人妻一区二区三区 | 另类第一页 | 夜色一区 | 蜜臀在线观看 | 天天艹夜夜 | 精品人妻人人做人人爽夜夜爽 | 午夜簧片| 国产一级av毛片 | 免费在线观看污网站 | 蜜臀aⅴ免费一区二区 | 一区二区三区少妇 | 日本黄色美女网站 | 黄色xxxxx| 黄网免费在线观看 | 日本人妖japanesexxx | 日本电影一区二区三区 | 久久精品亚洲天堂 | 精品福利电影 | 国产女主播在线 | 男生操女生免费网站 | 色姑娘天天操 | 精品国产aⅴ一区二区三区四川人 | 天堂中文在线资 | 免费成人蒂法网站 | 秋霞在线观看秋 | 亚洲人成网站999久久久综合 | 亚洲成人一级片 | 99热只有这里有精品 | 午夜影视免费 | 男人操女人逼逼视频 | 在线爱情大片免费观看大全 | 日韩一区在线视频 | jizz免费| 免费一区二区三区 | 粗大的内捧猛烈进出在线视频 | 久久免费视频2 | 久久福利视频网 | 欧美一二三视频 | 欧美婷婷| 日本熟妇乱子伦xxxx | 中文字幕一区二区三区乱码不卡 | 欧美亚洲专区 | 97人人模人人爽人人少妇 | 蜜桃av乱码一区二区三区 | 小辣椒导航 | 人妻精油按摩bd高清中文字幕 | 亚洲欧美在线观看视频 | 国产成人精品一区二三区四区五区 | 麻豆精品一区二区三区 | 花房姑娘免费全集 | 成人一区二区三区四区 | 久久久99久久 | 欧美一区二区免费视频 | 日日天天 | 欧美区亚洲区 | av手机天堂网 |