深度学习笔记-----基于TensorFlow2.2.0代码练习(一)

写在正文之前:
这篇紧接着上一篇的博文
https://blog.csdn.net/zdswyh123/article/details/106178597
主要写的是TensorFlow2.0的代码练习,跟随着KGP Talkie的【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,使用的损失函数是稀疏分类交叉熵
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

完毕

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