keras框架實現手寫數字識別

詳細細節可學習從零開始神經網絡:keras框架實現數字圖像識別詳解!

代碼實現:

[1]
'''
將訓練數據和檢測數據加載到內存中(第一次運行需要下載數據,會比較慢):
(mnist是手寫數據集)
train_images是用于訓練系統的手寫數字圖片;
train_labels是用于標注圖片的信息;
test_images是用于檢測系統訓練效果的圖片;
test_labels是test_images圖片對應的數字標簽。
'''
from tensorflow.keras.datasets import mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
print('train_images.shape = ',train_images.shape)
print('tran_labels = ', train_labels)
print('test_images.shape = ', test_images.shape)
print('test_labels', test_labels)
'''
1.train_images.shape打印結果表明,train_images是一個含有60000個元素的數組.
數組中的元素是一個二維數組,二維數組的行和列都是28.
也就是說,一個數字圖片的大小是28*28.
2.train_lables打印結果表明,第一張手寫數字圖片的內容是數字5,第二種圖片是數字0,以此類推.
3.test_images.shape的打印結果表示,用于檢驗訓練效果的圖片有10000張。
4.test_labels輸出結果表明,用于檢測的第一張圖片內容是數字7,第二張是數字2,依次類推。
'''[2]
'''
把用于測試的第一張圖片打印出來看看
'''
digit = test_images[0]
import matplotlib.pyplot as plt
plt.imshow(digit, cmap=plt.cm.binary)
plt.show()[3]
'''
使用tensorflow.Keras搭建一個有效識別圖案的神經網絡,
1.layers:表示神經網絡中的一個數據處理層。(dense:全連接層)
2.models.Sequential():表示把每一個數據處理層串聯起來.
3.layers.Dense(…):構造一個數據處理層。
4.input_shape(28*28,):表示當前處理層接收的數據格式必須是長和寬都是28的二維數組,
后面的“,“表示數組里面的每一個元素到底包含多少個數字都沒有關系.
'''
from tensorflow.keras import models
from tensorflow.keras import layersnetwork = models.Sequential()
#add往網絡里添加層
network.add(layers.Dense(512, activation='relu', input_shape=(28*28,))) #512是輸出結點個數
network.add(layers.Dense(10, activation='softmax')) #因為只能輸出0-9,是10種情況,所以輸出只能是10network.compile(optimizer='rmsprop', loss='categorical_crossentropy',metrics=['accuracy'])[4]               
'''
在把數據輸入到網絡模型之前,把數據做歸一化處理:
1.reshape(60000, 28*28):train_images數組原來含有60000個元素,每個元素是一個28行,28列的二維數組,
現在把每個二維數組轉變為一個含有28*28個元素的一維數組.
2.由于數字圖案是一個灰度圖,圖片中每個像素點值的大小范圍在0到255之間.
3.train_images.astype(“float32”)/255 把每個像素點的值從范圍0-255轉變為范圍在0-1之間的浮點值。(歸一化)
'''
train_images = train_images.reshape((60000, 28*28))
train_images = train_images.astype('float32') / 255test_images = test_images.reshape((10000, 28*28))
test_images = test_images.astype('float32') / 255'''
把圖片對應的標記也做一個更改:
目前所有圖片的數字圖案對應的是0到9。
例如test_images[0]對應的是數字7的手寫圖案,那么其對應的標記test_labels[0]的值就是7。
我們需要把數值7變成一個含有10個元素的數組,然后在第7個元素設置為1,其他元素設置為0。
例如test_lables[0] 的值由7轉變為數組[0,0,0,0,0,0,0,1,0,0,]
'''
from tensorflow.keras.utils import to_categorical
print("before change:" ,test_labels[0])
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)
print("after change: ", test_labels[0])[5]
'''
把數據輸入網絡進行訓練:
train_images:用于訓練的手寫數字圖片;
train_labels:對應的是圖片的標記;
batch_size:每次網絡從輸入的圖片數組中隨機選取128個作為一組進行計算。
epochs:每次計算的循環是五次
'''
network.fit(train_images, train_labels, epochs=5, batch_size = 128)[6]
'''
測試數據輸入,檢驗網絡學習后的圖片識別效果.
識別效果與硬件有關(CPU/GPU).
'''
test_loss, test_acc = network.evaluate(test_images, test_labels, verbose=1)
print(test_loss) 
print('test_acc', test_acc)[7]
'''
輸入一張手寫數字圖片到網絡中,看看它的識別效果
'''
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
digit = test_images[1]
plt.imshow(digit, cmap=plt.cm.binary)
plt.show()
test_images = test_images.reshape((10000, 28*28))
res = network.predict(test_images)for i in range(res[1].shape[0]):if (res[1][i] == 1):print("the number for the picture is : ", i)break

實現結果:

在這里插入圖片描述
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/389498.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/389498.shtml
英文地址,請注明出處:http://en.pswp.cn/news/389498.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

gdal進行遙感影像讀寫_如何使用遙感影像進行礦物勘探

gdal進行遙感影像讀寫Meet Jose Manuel Lattus, a geologist from Chile. In the latest Soar Cast, he discusses his work in mineral exploration and environmental studies, and explains how he makes a living by creating valuable information products based on diff…

從零開始神經網絡:keras框架實現數字圖像識別詳解!

接口實現可參考:keras框架實現手寫數字識別 思路: 我們的代碼要導出三個接口,分別完成以下功能: 初始化initialisation,設置輸入層,中間層,和輸出層的節點數。訓練train:根據訓練數據不斷的更…

大數據學習第一貼

搞了這么久的開發,一直沒有養成發博客的習慣,今天開始對大數據所需內容進行總結性記錄,并對以后遇到的問題形成一個自己的知識庫。就這些!轉載于:https://blog.51cto.com/13921538/2299765

推薦算法的先驗算法的連接_數據挖掘專注于先驗算法

推薦算法的先驗算法的連接So here we are diving into the world of data mining this time, let’s begin with a small but informative definition;因此,這一次我們將進入數據挖掘的世界,讓我們從一個小的但內容豐富的定義開始; 什么是數…

Android 頁面多狀態布局管理

一、現狀 頁面多狀態布局是開發中常見的需求,即頁面在不同狀態需要顯示不同的布局,實現的方式也比較多,最簡單粗暴的方式就是在 XML 中先將不同狀態對應的布局隱藏起來,根據需要改變其可見狀態,如果多個界面公用相同的…

Tensorflow入門神經網絡代碼框架

Tensorflow—基本用法 使用圖 (graph) 來表示計算任務.在被稱之為 會話 (Session) 的上下文 (context) 中執行圖.使用 tensor 表示數據.通過 變量 (Variable) 維護狀態.使用 feed 和 fetch 可以為任意的操作(arbitrary operation)賦值或者從其中獲取數據。 ? TensorFlow 是一…

手把手教你把代碼丟入github 中

手把手教你把代碼丟入github 中 作為一個小運維一步步教你們怎么把代碼放入到github 中 首先呢我們下載一個git的客戶端 https://git-scm.com/downloads/ 下載一個最新版的2.16.2 下載后那就安裝吧。如果看不懂英文就選擇默認安裝的方式吧。但是你得記住你的軟件安裝的位置 小…

時間序列模式識別_空氣質量傳感器數據的時間序列模式識別

時間序列模式識別 1. Introduction 2. Exploratory Data Analysis ° 2.1 Pattern Changes ° 2.2 Correlation Between Features 3. Anomaly Detection and Pattern Recognition ° 3.1 Point Anomaly Detection (System Fault) ° 3.2 Collective Anomaly Detection (Externa…

oracle 性能優化 07_診斷事件

2019獨角獸企業重金招聘Python工程師標準>>> 一、診斷事件 診斷事件無官方技術文檔支持,使用存在風險,慎用。使用診斷事件可以獲取問題更多的信息,調整系統運行 特性,啟用某些內部功能。用于系統故障的診斷。跟蹤應…

Tensorflow框架:卷積神經網絡實戰--Cifar訓練集

Cifar-10數據集包含10類共60000張32*32的彩色圖片,每類6000張圖。包括50000張訓練圖片和 10000張測試圖片 代碼分為數據處理部分和卷積網絡訓練部分: 數據處理部分: #該文件負責讀取Cifar-10數據并對其進行數據增強預處理 import os impo…

計算機科學速成課36:自然語言處理

詞性 短語結構規則 分析樹 語音識別 譜圖 快速傅里葉變換 音素 語音合成 轉載于:https://www.cnblogs.com/davidliu2018/p/9149252.html

linux內存初始化初期內存分配器——memblock

2019獨角獸企業重金招聘Python工程師標準>>> 1.1.1 memblock 系統初始化的時候buddy系統,slab分配器等并沒有被初始化好,當需要執行一些內存管理、內存分配的任務,就引入了一種內存管理器bootmem分配器。 當buddy系統和slab分配器初始化好后&…

數據科學學習心得_學習數據科學

數據科學學習心得蘋果 | GOOGLE | 現貨 | 其他 (APPLE | GOOGLE | SPOTIFY | OTHERS) Editor’s note: The Towards Data Science podcast’s “Climbing the Data Science Ladder” series is hosted by Jeremie Harris. Jeremie helps run a data science mentorship startup…

Keras框架:Alexnet網絡代碼實現

網絡思想: 1、一張原始圖片被resize到(224,224,3); 2、使用步長為4x4,大小為11的卷積核對圖像進行卷積,輸出的特征層為96層, 輸出的shape為(55,55,96); 3、使用步長為2的最大池化層進行池化,此時…

PHP對象傳遞方式

<?phpheader(content-type:text/html;charsetutf-8);class Person{public $name;public $age;}$p1 new Person;$p1->name 金角大王;$p1->age 400;//這個地方&#xff0c;到底怎樣?$p2 $p1;$p2->name 銀角大王;echo <pre>;echo p1 name . $p1->n…

微軟Azure CDN現已普遍可用

微軟宣布Azure CDN一般可用&#xff08;GA&#xff09;&#xff0c;客戶現在可以從微軟的全球CDN網絡提供內容。最新版本是對去年五月份發布的公眾預覽版的跟進。\\今年5月&#xff0c;微軟與Verizon和Akamai一起推出了原生CDN產品。現在推出了GA版本&#xff0c;根據發布博文所…

數據科學生命周期_數據科學項目生命周期第1部分

數據科學生命周期This is series of how to developed data science project.這是如何開發數據科學項目的系列。 This is part 1.這是第1部分。 All the Life-cycle In A Data Science Projects-1. Data Analysis and visualization.2. Feature Engineering.3. Feature Selec…

Keras框架:VGG網絡代碼實現

VGG概念&#xff1a; VGG之所以經典&#xff0c;在于它首次將深度學習做得非常“深”&#xff0c;達 到了16-19層&#xff0c;同時&#xff0c;它用了非常“小”的卷積核&#xff08;3X3&#xff09;。 網絡框架&#xff1a; VGG的結構&#xff1a; 1、一張原始圖片被resize…

Django筆記1

內容整理1.創建django工程django-admin startproject 工程名2.創建APPcd 工程名python manage.py startapp cmdb3.靜態文件project.settings.pySTATICFILES_dirs {os.path.join(BASE_DIR, static),}4.模板路徑DIRS > [os.path.join(BASE_DIR, templates),]5.settings中mid…

BZOJ 2003 [Hnoi2010]Matrix 矩陣

題目鏈接 https://www.lydsy.com/JudgeOnline/problem.php?id2003 題解 考慮搜索。 確定了第一行和第一列&#xff0c;那么就確定了整個矩陣&#xff0c;因此搜索的范圍可以降到399個位置。 首先搜索第一行&#xff0c;顯然每個不是第一行第一列的位置都可以由三個位置唯一確定…