Keras 淺嚐之MNIST手寫數字識別

2021-07-09 02:19:14 字數 4574 閱讀 5008

最近關注了一陣keras,感覺這個東西挺方便的,今天嘗試了一下發現確實還挺方便。不但提供了常用的layers、normalization、regularation、activation等演算法,甚至還包括了幾個常用的資料庫例如cifar-10和mnist等等。

下面的**算是keras的helloworld吧!利用mlp實現的mnist手寫數字識別:

from

keras

.models

import

sequential

from

keras

.layers

.core

import

dense

,dropout

,activation

from

keras

.optimizers

import

sgd

from

keras

.datasets

import

mnist

import

numpy

model

=sequential

()model

.add

(dense

(784

,500

,init

='glorot_uniform'

))# 輸入層,28*28=784

model

.add

(activation

('tanh'

))# 啟用函式是tanh

model

.add

(dropout

(0.5

))# 採用50%的dropout

model

.add

(dense

(500

,500

,init

='glorot_uniform'

))# 隱層節點500個

model

.add

(activation

('tanh'

))model

.add

(dropout

(0.5

))model

.add

(dense

(500,10

,init

='glorot_uniform'

))# 輸出結果是10個類別,所以維度是10

model

.add

(activation

('softmax'

))# 最後一層用softmax

sgd

=sgd(lr

=0.01

,decay

=1e-6

,momentum

=0.9

,nesterov

=true

)# 設定學習率(lr)等引數

model

.compile

(loss

='categorical_crossentropy'

,optimizer

=sgd

,class_mode

='categorical'

)# 使用交叉熵作為loss函式

(x_train

,y_train),(

x_test

,y_test)=

mnist

.load_data

()# 使用keras自帶的mnist工具讀取資料(第一次需要聯網)

x_train

=x_train

.reshape

(x_train

.shape[0

],x_train

.shape[1

]*x_train

.shape[2

])# 由於mist的輸入資料維度是(num, 28, 28),這裡需要把後面的維度直接拼起來變成784維

x_test

=x_test

.reshape

(x_test

.shape[0

],x_test

.shape[1

]*x_test

.shape[2

])y_train =(

numpy

.arange(10

)==y_train

[:,none

]).astype

(int

)y_test =(

numpy

.arange(10

)==y_test

[:,none

]).astype

(int

)# 開始訓練,這裡引數比較多。batch_size就是batch_size,nb_epoch就是最多迭代的次數, shuffle就是是否把資料隨機打亂之後再進行訓練

# verbose是屏顯模式,官方這麼說的:verbose: 0 for no logging to stdout, 1 for progress bar logging, 2 for one log line per epoch.

# 就是說0是不屏顯,1是顯示乙個進度條,2是每個epoch都顯示一行資料

# show_accuracy就是顯示每次迭代後的正確率

# validation_split就是拿出百分之多少用來做交叉驗證

model

.fit

(x_train

,y_train

,batch_size

=200

,nb_epoch

=100

,shuffle

=true

,verbose=1

,show_accuracy

=true

,validation_split

=0.3

)print

'test set'

model

.evaluate

(x_test

,y_test

,batch_size

=200

,show_accuracy

=true

,verbose=1

)

屏顯輸出了這麼一大堆東西:

ssh

://shibotian@***.***.***.***:22/usr/bin/python -u /usr/local/shared_dir/local/ipython_shibotian/shibotian/code/kreas_test1/run.py

using

gpu device 0:

tesla

k40m

train

on 42000

samples

,validate on

18000

samples

epoch00

/42000

[******************************]-1s

-loss

:0.9894

-acc

.:0.7386

-val

.loss

:0.4795

-val

.acc

.:0.8807

epoch10

/42000

[******************************]-1s

-loss

:0.5635

-acc

.:0.8360

-val

.loss

:0.4084

-val

.acc

.:0.8889

省略。。。。。

epoch980

/42000

[******************************]-1s

-loss

:0.2838

-acc

.:0.9116

-val

.loss

:0.1872

-val

.acc

.:0.9418

epoch990

/42000

[******************************]-1s

-loss

:0.2740

-acc

.:0.9163

-val

.loss

:0.1842

-val

.acc

.:0.9434

test

set0

/10000

[******************************]-0s

-loss

:0.1712

-acc

.:0.9480

process

finished

with

exit

code

0

p.s. verbose=1時候的進度條很可愛啊點讚

keras 實現mnist手寫數字集識別

coding utf 8 classifier mnist import numpy as np np.random.seed 1337 from keras.datasets import mnist from keras.utils import np utils from keras.mode...

用Keras進行手寫字型識別(MNIST資料集)

首先載入資料 from keras.datasets import mnist train images,train labels test images,test labels mnist.load data 接下來,看看這個資料集的基本情況 train images.shape 60000,28...

Keras入門實戰(1) MNIST手寫數字分類

目錄 1 首先我們載入keras中的資料集 2 網路架構 3 選擇編譯 compile引數 4 準備影象資料 5 訓練模型 6 測試資料 前面的部落格中已經介紹了如何在ubuntu下安裝keras深度學習框架。現在我們使用 keras 庫來學習手寫數字分類。我們這裡要解決的問題是 將手寫數字的灰度影...