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個特徵向量,...