卷積神經網路案例 中文字型識別 隸書和行楷

2021-10-22 18:30:59 字數 3681 閱讀 5393

一、alexnet網路結構

1.1 alexnet介紹:

imagenet競賽冠軍獲得者hinton和他的學生krizhevsky alex於2023年設計。

imagenet競賽中第乙個使用卷積神經網路的參賽者。

1.2 alexnet網路結構:8層

卷積層池化層

卷積層池化層

卷積層卷積層

卷積層池化層

輸出層:三個全連線層

1.3 alexnet創新點:

成功使用relu作為cnn的啟用函式;

使用dropout隨機忽略一部分神經元,避免模型過擬合;

在cnn中使用重疊的最大值池化(步長小於卷積核);

提出區域性響應歸一化層(local response normalization,lrn),後逐漸被bn(batch normalization)代替;

使用cuda加速神經網路的訓練,利用了gpu強大的計算能力;

採用了資料增強(data augmentation)技術,達到增加樣本量的目的。

二、案例:中文字型識別——隸書和行楷

2.1 資料準備

2.2 構造資料生成器

(1) 資料生成器

from keras.preprocessing.image import imagedatagenerator

imsize=

227validation_generator = imagedatagenerator(rescale=1.

/255

).flow_from_directory(

'./data/chinesestyle/test/'

, target_size=

(imsize, imsize)

, batch_size=

200,

class_mode=

'categorical'

)train_generator = imagedatagenerator(rescale=1.

/255

).flow_from_directory(

'./data/chinesestyle/train'

, target_size=

(imsize, imsize)

, batch_size=

200,

class_mode=

'categorical'

)

(2)輸出影象

2.3 alexnet**實現

from keras.layers import activation,conv2d, batchnormalization, dense

from keras.layers import dropout, flatten, input, maxpooling2d, zeropadding2d

from keras import model

imsize =

227input_layer = input(

[imsize,imsize,3]

)x = input_layer

x = conv2d(96,

[11,11

],strides =[4

,4], activation =

'relu'

)(x)

x = maxpooling2d([3

,3], strides =[2

,2])

(x)

x = conv2d(

256,[5

,5],padding =

"same"

, activation =

'relu'

)(x)

x = maxpooling2d([3

,3], strides =[2

,2])

(x)x = conv2d(

384,[3

,3],padding =

"same"

, activation =

'relu'

)(x)

x = conv2d(

384,[3

,3],padding =

"same"

, activation =

'relu'

)(x)

x = conv2d(

256,[3

,3],padding =

"same"

, activation =

'relu'

)(x)

x = maxpooling2d([3

,3], strides =[2

,2])

(x)x = flatten(

)(x)

x = dense(

4096

,activation =

'relu'

)(x)

x = dropout(

0.5)

(x)x = dense(

4096

,activation =

'relu'

)(x)

x = dropout(

0.5)

(x)x = dense(

2,activation =

'softmax'

)(x)

output_layer=x

model=model(input_layer,output_layer)

model.summary(

)

2.4 alexnet編譯執行

from keras.optimizers import adam

model.

compile

(loss=

'categorical_crossentropy'

,optimizer=adam(lr=

0.001

),metrics=

['accuracy'])

model.fit_generator(train_generator,epochs=

20,validation_data=validation_generator)

卷積神經網路文字輸入 使用卷積神經網路進行文字分類

cnn 是卷積神經網路,通常用於影象領域,並且在影象分類取得非常好的效果。2014 年 yoon kim 在 convolutional neural networks for sentence classification 中將 cnn 的思想應用到文字處理中,後續很多把 convnet 用在 n...

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

隨機產生乙個輸入資料 輸入資料 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.r...

keras 構建卷積神經網路人臉識別

olivettifaces是紐約大學的乙個比較小的人臉庫,由40個人的400張構成,即每個人的人臉為10張。每張的灰度級為8位,每個畫素的灰度大小位於0 255之間,每張大小為64 64。大小是1190 942,一共有20 20張人臉,故每張人臉大小是 1190 20 942 20 即57 47 2...