project1:手写数字识别

import tensorflow as tf
import matplotlib.pyplot as plt
mnist=tf.keras.datasets.mnist
(x_train,y_train),(x_test,y_test)=mnist.load_data()
x_train,x_test=x_train/255.0,x_test/255.0#归一化,把输入的值变小更适合神经网络吸收
plt.figure()#看看训练集,没什么毛病
for i in range(10):
    plt.subplot(1,10,i+1)
    plt.imshow(x_train[i])
    print(y_train[i])
model=tf.keras.models.Sequential([
    tf.keras.layers.Flatten(),#把输入特征拉直为一维数组
    tf.keras.layers.Dense(50,activation='relu'),
    tf.keras.layers.Dense(100,activation='softmax')
])#sequential是连续的意思,也就是可以一层一层堆叠神经网络,事实上,sequential可以表示全连接神经网络,卷积神经网络,循环神经网络等
model.compile(optimizer='adam',
             loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),#输出满足概率分布,因此这里的from_logits是False
             metrics=['sparse_categorical_accuracy'])#衡量指标
model.fit(x_train,y_train,batch_size=32,epochs=50,validation_data=(x_test,y_test),validation_freq=1)#validation_freq是测试的频率
model.summary()#打印出网络结构和参数统计    
import tensorflow as tf
from tensorflow.keras.layers import Dense,Flatten
from tensorflow.keras import Model
mnist=tf.keras.datasets.mnist
(x_train,y_train),(x_test,y_test)=mnist.load_data()
x_train,x_test=x_train/255.0,x_test/255.0#跟前面没什么区别,只是把layer里的Dense,Flatten单独提了出来
class MnistModel(Model):
    def __init__(self):
        super(MnistModel,self).__init__()#重新定义__init__()会覆盖父类的属性,但是通过super函数可以同时继承父类的属性,并且也会有重新添加的属性
        self.flatten=Flatten()
        self.d1=Dense(128,activation='relu')
        self.d2=Dense(10,activation='softmax')
    def call(self,x):#前面说过sequential相当于走了一遍前向传播,与这里的call函数相似
        x=self.flatten(x)
        x=self.d1(x)
        y=self.d2(x)
        return y
model=MnistModel()
model.compile(optimizer='adam',
             loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
             metrics=['sparse_categorical_accuracy'])
model.fit(x_train,y_train,batch_size=32,epochs=5,validation_data=(x_test,y_test),validation_freq=1)
model.summary()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用PyCharm进行手写数字识别的步骤: 1. 安装PyCharm:首先,你需要在你的计算机上安装PyCharm。你可以从JetBrains官方网站下载并安装PyCharm Community Edition(免费版本)或者Professional Edition(付费版本)。 2. 创建新项目:打开PyCharm,点击"Create New Project"(创建新项目)按钮。选择一个合适的项目名称和位置,并选择Python解释器。 3. 导入所需库:在PyCharm的项目中,你需要导入一些必要的库,例如TensorFlow和OpenCV。你可以使用以下命令在PyCharm的终端中安装这些库: ```shell pip install tensorflow opencv-python ``` 4. 下载训练数据集:手写数字识别需要一个训练数据集来训练模型。你可以从MNIST数据库中下载手写数字数据集。在PyCharm的项目中创建一个新的文件夹,将数据集保存在该文件夹中。 5. 编写代码:在PyCharm中创建一个新的Python文件,并编写代码来加载数据集、构建模型、训练模型和进行预测。你可以使用TensorFlow提供的API来实现这些功能。以下是一个简单的示例代码: ```python import tensorflow as tf from tensorflow.keras.datasets import mnist # 加载数据集 (x_train, y_train), (x_test, y_test) = mnist.load_data() # 构建模型 model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28)), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dense(10, activation='softmax') ]) # 编译模型 model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) # 训练模型 model.fit(x_train, y_train, epochs=5) # 进行预测 predictions = model.predict(x_test) ``` 6. 运行代码:在PyCharm中点击运行按钮,运行你的代码。你将看到模型开始训练,并且在训练完成后进行预测。 请注意,以上只是一个简单的示例,你可以根据自己的需求和数据集进行适当的修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值