TensorFlow Mnist手写数字识别

手写数字识别(从ipynb转化成py,直接就可运行),转化方法如下:

https://www.jianshu.com/p/c51f9504d84ficon-default.png?t=M0H8https://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])

你可能感兴趣的:(TensorFlow,tensorflow,深度学习,python)