手写数字识别(从ipynb转化成py,直接就可运行),转化方法如下:
https://www.jianshu.com/p/c51f9504d84f
https://www.jianshu.com/p/c51f9504d84f
#!/usr/bin/env python
# coding: utf-8
# ## 一、加载数据
# x_train表示训练数据集,y_train表示训练数据集对应的结果;
#
# x_test表示测试数据集,y_test表示测试集对应的结果。
# In[47]:
# 教程链接:https://blog.csdn.net/dusin/article/details/108544965
import tensorflow as tf
mnist=tf.keras.datasets.mnist
(x_train,y_train),(x_test,y_test)=mnist.load_data() #加载数据
# In[48]:
# x_train表示训练数据,共60000条数据,每个数据是28*28的图像。
x_train.shape
# In[31]:
# 可以使用matplotlib将其中的图像画出来。 如下代码为训练集中的第2张图片(序号从0开始):
import matplotlib.pyplot as plt
plt.imshow(x_train[1])
# In[32]:
y_train[1]
# In[33]:
x_train[1]
# ## 二、预处理数据
# In[34]:
# 将训练集和测试集数据都进行归一化处理,如下代码所示:
x_train=tf.keras.utils.normalize(x_train,axis=1)
x_test=tf.keras.utils.normalize(x_test,axis=1)
# In[45]:
# 然后再使用 “x_train[1]”显示一下结果,如下图所示,相当于每个数据都除以了255
x_train[1]
# ## 三、构建神经网络并训练
# 下面的代码构建了一个输入层748(即28 * 28个像素),两个128神经元的隐藏,及10个神经元的输出层的神经网络。
#
# metrics是衡量指标,有很多,这里选了准确度
#
# 损失函数:选用sparse_categorical_crossentropy而不是categorical_crossentropy的原因是:y_train不是one-hot类型的
#
# https://www.cnblogs.com/pandas-blue/p/12448185.html
# In[49]:
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(128,activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(128,activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(10,activation=tf.nn.softmax))
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])
# In[36]:
model.fit(x_train,y_train,epochs=5) #训练模型,进行5次迭代训练
# ## 四、测试神经网络
# In[37]:
# 以下一行代码使用测试集进行测试
val_loss,val_acc=model.evaluate(x_test,y_test) # 获取准确率
# In[38]:
# 判断某些数据,还是从测试集中挑选图片来预测。如下代码:
predictions=model.predict([x_test[5:8]])#识别测试集中第6到8张图片
print(predictions)
# In[42]:
plt.imshow(x_test[5])
# In[43]:
plt.imshow(x_test[6])
# In[44]:
plt.imshow(x_test[7])
版权声明:本文为hamburgerJ原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。