日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Keras】30 秒上手 Keras+实例对mnist手写数字进行识别准确率达99%以上

發布時間:2023/12/20 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Keras】30 秒上手 Keras+实例对mnist手写数字进行识别准确率达99%以上 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文我們將學習使用Keras一步一步搭建一個卷積神經網絡。具體來說,我們將使用卷積神經網絡對手寫數字(MNIST數據集)進行識別,并達到99%以上的正確率。

@為什么選擇Keras呢?

主要是因為簡單方便。更多細節請看:https://keras.io/

@什么卷積神經網絡?

簡單地說,卷積神經網絡(CNNs)是一種多層神經網絡,它可以有效地減少全連接神經網絡參數量太大的問題。

下面就直接進入主題吧!

import keras keras.__version__

‘2.1.5’

from keras.models import Sequential # 序貫模型 model = Sequential() from keras.layers import Dense import numpy as np import tensorflow as tf

配置keras模型

# units 矩陣運算輸出的特征維度,input_dim 輸入數據特征維度 model.add(Dense(units=64, activation='relu', input_dim=100)) model.add(Dense(units=10, activation='softmax')) model.add(Dense(units = 1024,activation='tanh')) model.output_shape

(None, 10)

model.output_shape

(None, 1024)

在完成了模型的構建后, 可以使用 .compile() 來配置學習過程

model.compile(loss='categorical_crossentropy',optimizer='sgd',metrics=['accuracy'])

訓練

不需要寫for循環

model.fit(x_train, y_train, epochs=5, batch_size=32)

一批批交給模型,需要自己寫for循環

model.train_on_batch(x_batch, y_batch)

模型評估

loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)

模型預測

classes = model.predict(x_test, batch_size=128)


實例 mnist 手寫數字進行識別

(外網下載數據可能很慢或者timeouts)

導包、定義變量

import keras # 數據集 from keras.datasets import mnist # 序貫模型 from keras.models import Sequential # Dense:矩陣運算 # Dropout:防止過擬合 # Flatten:reshape(None,-1) from keras.layers import Dense, Dropout, Flatten # Conv2D:卷積運算 # MaxPooling2D:池化 from keras.layers import Conv2D, MaxPooling2D# 后端,后臺 # 默認Tensorflow from keras import backend as Kbatch_size = 128 num_classes = 10 epochs = 12# input image dimensions img_rows, img_cols = 28, 28

數據操作,轉換

import tensorflow as tf # the data, split between train and test sets (x_train, y_train), (x_test, y_test) = mnist.load_data()# 四維的NHWC---->卷積運算需要 x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1) x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1) input_shape = (img_rows, img_cols, 1)# 類型轉換 x_train = x_train.astype('float32') x_test = x_test.astype('float32')# 歸一化 0 ~1 x_train /= 255 x_test /= 255 print('x_train shape:', x_train.shape) print(x_train.shape[0], 'train samples') print(x_test.shape[0], 'test samples')print(y_train.shape) # convert class vectors to binary class matrices # one-hot y_train = keras.utils.to_categorical(y_train, num_classes) y_test = keras.utils.to_categorical(y_test, num_classes)

模型構建

# 聲明序貫模型 model = Sequential() # 第一層卷積 model.add(Conv2D(32, kernel_size=(3, 3),activation='relu',input_shape=input_shape)) # 第二層卷積 model.add(Conv2D(64, (3, 3), activation='relu')) # 池化層 model.add(MaxPooling2D(pool_size=(2, 2))) # dropout層 model.add(Dropout(0.25)) # reshape model.add(Flatten()) # 全連接層,矩陣運算 model.add(Dense(1024, activation='relu')) # dropout層 model.add(Dropout(0.5)) # 輸出層 model.add(Dense(num_classes, activation='softmax'))

編譯,最優化

model.compile(loss=keras.losses.categorical_crossentropy,optimizer=keras.optimizers.Adadelta(),metrics=['accuracy'])

訓練

x_train.shape

(60000, 28, 28, 1)

model.fit(x_train, y_train,batch_size=batch_size,epochs=epochs,verbose=1,validation_data=(x_test, y_test))

Train on 60000 samples, validate on 10000 samples
Epoch 1/12
26752/60000 [============>…] - ETA: 1:38 - loss: 0.3388 - acc: 0.8965

score = model.evaluate(x_test, y_test, verbose=0) print('Test loss:', score[0]) print('Test accuracy:', score[1])

參考:
https://elitedatascience.com/keras-tutorial-deep-learning-in-python
http://adventuresinmachinelearning.com/keras-tutorial-cnn-11-lines/
https://keras.io/zh/#30-keras

總結

以上是生活随笔為你收集整理的【Keras】30 秒上手 Keras+实例对mnist手写数字进行识别准确率达99%以上的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。