Keras實現卷積神經網路

2022-05-06 13:12:12 字數 2966 閱讀 5078

1

#-*- coding: utf-8 -*-

2"""

3created on sun jan 20 11:25:29 201945

@author: zhen

6"""78

import

numpy as np

9from keras.datasets import

mnist

10from keras.models import

sequential

11from keras.layers import

dense

12from keras.layers import

dropout

13from keras.layers import

flatten

14from keras.layers.convolutional import

conv2d

15from keras.layers.convolutional import

maxpooling2d

1617

#載入資料

18 (x_train, y_train), (x_test, y_test) = mnist.load_data("

../test_data_home")

19#轉化訓練資料為四維張量形式

20 x_train = x_train.reshape(x_train.shape[0], 28, 28, 1).astype("

float32")

21 x_test = x_test.reshape(x_test.shape[0], 28, 28, 1).astype("

float32")

22#歸一化23 x_train /= 255

24 x_test /= 255

2526

#轉化為one hot 編碼

27def

to_one_hot(y):

28 y_one_hot = np.zeros(10) #

生成全零向量

29 y_one_hot[y] = 1

30return

y_one_hot

3132

#重置標籤

33 y_train_one_hot = np.array([to_one_hot(y_train[i]) for i in

range(len(y_train))])

34 y_test_one_hot = np.array([to_one_hot(y_test[i]) for i in

range(len(y_test))])35#

搭建卷積神經網路

36 model =sequential()

37 model.add(conv2d(filters=32, kernel_size=(3, 3), strides=(1, 1), padding='

same

', input_shape=(28, 28, 1),

38 activation='

relu'))

39#新增最大池化層

40 model.add(maxpooling2d(pool_size=(2, 2)))41#

新增dropout層

42 model.add(dropout(0.2))43#

構建深度網路

44 model.add(conv2d(64, kernel_size=(3, 3), strides=(1, 1), padding='

same

', activation='

relu'))

45 model.add(maxpooling2d(pool_size=(2, 2)))

46 model.add(dropout(0.2))

47 model.add(conv2d(128, kernel_size=(3, 3), strides=(1, 1), padding='

same

', activation='

relu'))

48 model.add(maxpooling2d(pool_size=(2, 2)))

49 model.add(dropout(0.2))50#

展開51

model.add(flatten())52#

構造全連線層

53 model.add(dense(128, activation='

relu'))

54 model.add(dense(64, activation='

relu'))

55 model.add(dense(32, activation='

relu'))

56 model.add(dense(10, activation='

softmax'))

57#定義損失函式

58 model.compile(loss='

categorical_crossentropy

', optimizer='

adagrad',

59 metrics=['

accuracy'])

60#訓練61 model.fit(x_train, y_train_one_hot, validation_data=(x_test, y_test_one_hot),

62 epochs=2, batch_size=128)63#

評估64

#verbose : 0表示不顯示資料,1表示顯示進度

65 scores = model.evaluate(x_test, y_test_one_hot, verbose=0)

66print(scores)

結果:

Keras 2 3 keras實現卷積神經網路

cnn convolutional neural networks 卷積神經網路在 keras 上的 實現。用到的資料集還是mnist。不同的是這次用到的層比較多,匯入的模組也相應增加了一些。下面直接進入 部分 import numpy as np np.random.seed 1337 for r...

卷積神經網路 Keras 由淺入深

python mathematics 卷積神經網路能夠有效的處理影象檔案,當然換一種說法就是能夠有效處理矩陣。其關鍵部分就是 卷積核 過濾器 的生成。當然還有一些其他的基礎操作。對於卷積核 卷積核的特徵 init filters,kernel size,strides 1 1 padding val...

keras卷積神經網路舉例

特徵圖深度在增加 從32到128,但尺寸在變小 from keras import layers from keras import model 輸入尺寸為150 150 3,展平後是7 7 128 model model.sequential 二維卷積核 提取的圖塊大小 一般3 3 9個特徵向量,...