首先載入資料
from keras.datasets import mnist
(train_images, train_labels)
,(test_images, test_labels)
= mnist.load_data(
)
接下來,看看這個資料集的基本情況:
train_images.shape
(60000, 28, 28)
len
(train_labels)
train_labels
array([5, 0, 4, …, 5, 6, 8], dtype=uint8)
test_images.shape
(10000, 28, 28)
len
(test_labels)
test_labels
array([7, 2, 1, …, 4, 5, 6], dtype=uint8)
from keras import models
from keras import layers
network = models.sequential(
)network.add(layers.dense(
512, activation=
'relu'
, input_shape=(28
*28,)
))network.add(layers.dense(
10, activation=
'softmax'
))
keras可以幫助我們實現一層一層的連線起來,在本例中的網路包含2個dense層,他們是密集連線(也叫全連線)的神經層。第二層是乙個10路softmax層,他將返回乙個由10個概率值(總和為1)組成的陣列。每個概率值表示當前數字影象屬於10個數字類別中的某乙個的概率。
要想訓練網路,我們還需要設定編譯步驟的三個引數:
network.
compile
(optimizer=
'rmsprop'
, loss=
'categorical_crossentropy'
, metrics=
['accuracy'
])
在訓練之前,需要對影象資料預處理,將其變換成網路要求的形狀,並縮放所有值都在[0,1]區間。比如,之前訓練影象儲存在乙個uint8型別的陣列中,其形狀為(60000,28, 28),取值範圍為[0, 255]。我們需要將其變換成乙個float32陣列,其形狀為(60000, 28*28),取值範圍為0-1
train_images = train_images.reshape(
(60000,28
*28))
#把乙個影象變成一列資料用於學習
train_images = train_images.astype(
'float32')/
255#astype用於進行資料型別轉換
test_images = test_images.reshape(
(10000,28
*28))
test_images = test_images.astype(
'float32')/
255
from keras.utils import to_categorical
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)
network.fit(train_images, train_labels, epochs=
5, batch_size=
128)
會有乙個輸出
看看測試集表現如何:
test_loss, test_acc = network.evaluate(test_images, test_labels)
print
('test_acc:'
, test_acc)
我們還可以看某乙個具體的影象顯示情況
keras實現手寫字型識別
losses損失函式 optimizers優化目標函式,比如sgd datasets常用資料集,比如mnist models序貫模型,比如sequential layers神經網路中的層,比如全連線層dense activations啟用函式 import keras 匯入keras from ke...
kaggle mnist手寫字型識別
現在的許多手寫字型識別 都是基於已有的mnist手寫字型資料集進行的,而kaggle需要用到 上給出的資料集並生成測試集的輸出用於提交。這裡選擇keras搭建卷積網路進行識別,可以直接生成測試集的結果,最終結果識別率大概97 左右的樣子。coding utf 8 created on tue jun...
用word模仿手寫字型
首先我們來看一下效果圖 咳咳,是不是很有feel!將手寫字型解壓到資料夾下 開啟控制面板,搜尋字型,然後進入資料夾 然後將之前資料夾下的ttf檔案拖拽進去就可以了。接下來開啟word!開啟檔案 選項 信任中心 信任中心設定中選擇該選項 開啟檢視 巨集 新建 手寫字型 sub 手寫字型 手寫字型 巨集...