深度學習筆記-----基於TensorFlow2.2.0代碼練習(第一課)

寫在正文之前:
這篇緊接着上一篇的博文
https://blog.csdn.net/zdswyh123/article/details/106178597
主要寫的是TensorFlow2.0的代碼練習,跟隨着KGP Talkie的【TensorFlow 2.0】實戰進階教程進行學習,並將其中一些不適用的代碼錯誤進行修改。
本文跟隨視頻油管非常火的【TensorFlow 2.0】實戰進階教程(中英字幕+代碼實戰)
第一課代碼

正文:
首先需要打開jupyter,然後之後會代碼如下:

前期準備工作,導入包

import tensorflow as tf
from tensorflow import keras


import numpy as np
import pandas as pd #將輸入轉換成浮點類型數據
import matplotlib.pyplot as plt

導入數據

mnist = keras.datasets.fashion_mnist 

看看是不是有這塊

type(mnist)

輸出

module

數據導入

(X_train, y_train),(X_test,y_test) = mnist.load_data()#只需要下載數據一次就行,第一次慢

數據查看,是否下載完畢

X_train.shape#查看是否對的

輸出

(60000, 28, 28)
np.max(X_train)#提取訓練集中最大值

輸出

255
y_train#查看標籤的數值,因爲其分類爲10類

輸出

array([9, 0, 0, ..., 3, 0, 5], dtype=uint8)

定義類別

class_names =['top','trouser','pullover','dress','coat','sandal','shirt','sneaker','bag','ankle boot']#定義10個類別的名稱
plt.figure()#可視化
plt.imshow(X_train[1])#【】裏面的數據可以自己輸入隨便一個畫出第幾個的圖
plt.colorbar()#加一個顏色條

<matplotlib.colorbar.Colorbar at 0x1fed7cc57c8>

在這裏插入圖片描述

#將數據集歸一化 即降低數據集的值
X_train = X_train/255.0
X_test = X_test/255.0
plt.figure()#可視化
plt.imshow(X_train[1])#【】裏面的數據可以自己輸入隨便一個畫出第幾個的圖
plt.colorbar()#加一個顏色條
#可以看出值被縮放到0到1之間
<matplotlib.colorbar.Colorbar at 0x1fed4fbf788>

在這裏插入圖片描述

# 建立使用TF模型
from tensorflow.python.keras.models import Sequential #導入訓練模型
from tensorflow.python.keras.layers import Flatten,Dense#導入神經網絡的第一層和第二層

注意,在版本2.2.0時候,tensorflow和keras.layers之間必須要加python,不然會報錯,報的錯是這個:https://blog.csdn.net/zdswyh123/article/details/106174992

model = Sequential()
model.add(Flatten(input_shape = (28,28)))#此行代碼是將圖的大小數據轉換成一維的數據
model.add(Dense(128,activation = 'relu'))#定義第一層神經網絡有128個單元,並且選擇的激活函數是ReLu函數,也可以是其他函數性sigmoid函數
# 這裏要是不懂可以查看吳恩達老師深度學習的3.6節課
model.add(Dense(10,activation = 'softmax'))#定義輸出層,有10類所以輸出10,激活函數是max函數
WARNING:tensorflow:From F:\Anaconda3\lib\site-packages\tensorflow\python\ops\resource_variable_ops.py:435: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.
Instructions for updating:
Colocations handled automatically by placer.

警告沒什麼用,可以繼續

model.summary()#查看自己寫的代碼的總體參數
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
flatten_5 (Flatten)          (None, 784)               0         
_________________________________________________________________
dense_8 (Dense)              (None, 128)               100480    
_________________________________________________________________
dense_9 (Dense)              (None, 10)                1290      
=================================================================
Total params: 101,770
Trainable params: 101,770
Non-trainable params: 0
_________________________________________________________________
#模型補充
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])#定義損失函數
#使用的優化器名叫AdamOptimizer,使用的損失函數是稀疏分類交叉熵

注意:adam算法的介紹和解釋可在吳恩達老師的課中學習到:https://www.bilibili.com/video/BV1V441127zE?p=22

model.fit(X_train,y_train,epochs = 10)#進行訓練,epochs是顯示運行多少次
Epoch 1/10
60000/60000 [==============================] - 4s 73us/sample - loss: 0.5022 - acc: 0.8241
Epoch 2/10
60000/60000 [==============================] - 4s 67us/sample - loss: 0.3764 - acc: 0.8639
Epoch 3/10
60000/60000 [==============================] - 4s 64us/sample - loss: 0.3361 - acc: 0.8774
Epoch 4/10
60000/60000 [==============================] - 4s 64us/sample - loss: 0.3124 - acc: 0.8864
Epoch 5/10
60000/60000 [==============================] - 4s 65us/sample - loss: 0.2938 - acc: 0.8924
Epoch 6/10
60000/60000 [==============================] - 3s 51us/sample - loss: 0.2778 - acc: 0.8985
Epoch 7/10
60000/60000 [==============================] - 3s 44us/sample - loss: 0.2645 - acc: 0.9021
Epoch 8/10
60000/60000 [==============================] - 2s 41us/sample - loss: 0.2538 - acc: 0.9065
Epoch 9/10
60000/60000 [==============================] - 2s 40us/sample - loss: 0.2442 - acc: 0.9097
Epoch 10/10
60000/60000 [==============================] - 2s 41us/sample - loss: 0.2369 - acc: 0.9110





<tensorflow.python.keras.callbacks.History at 0x1fed7411fc8>
test_loss, test_acc = model.evaluate(X_test,y_test)#利用測試集測試訓練下的模型的準確度
print(test_acc)
10000/10000 [==============================] - 0s 24us/sample - loss: 0.3394 - acc: 0.8814
0.8814
#測試的準確率低於訓練的準確率表明模型是過度擬合
#預測模型精確度
from sklearn.metrics import accuracy_score

 y_pred = model.predict_classes(X_test)
accuracy_score(y_test,y_pred)
0.8814

完畢

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章