概述
tensorflow中使用class实现手写数字识别
代码示例:
#第一步,import import tensorflow as tf #导入模块 import numpy as np from tensorflow.keras.layers import Dense, Flatten from tensorflow.keras import Model #第二步,train, test # mnist = tf.keras.datasets.mnist #导入mnist数据集 # (x_train, y_train), (x_test, y_test) = mnist.load_data() #分别配置训练集和测试集的输入和标签 path = './mnist.npz' #数据路径 f = np.load(path) #加载数据 x_train, y_train = f['x_train'], f['y_train'] #导入训练集的输入和标签 x_test, y_test = f['x_test'], f['y_test'] #导入测试集的输入和标签 f.close() x_train, x_test = x_train/255.0, x_test/255.0 #把输入特征做归一化处理,让值在0-1之间,更容易让神经网络吸收 #第三步,model.Sequentiao() # model = tf.keras.models.Sequential([ # model.Sequential()搭建神经网络 # tf.keras.layers.Flatten(), # 把数据集变成一位数组 # tf.keras.layers.Dense(128, activation="relu"), # 构建128个神经元,激活函数为relu的全连接层 # tf.keras.layers.Dense(10, activation="softmax") # 构建10个神经元,激活函数为softmax的全连接层 # ]) class mnistModel(Model): def __init__(self): super(mnistModel, self).__init__() self.flatten = Flatten() #搭建网络块,将输入特征拉直为一维数组 self.d1 = Dense(128, activation = "relu") #搭建网络块,全连接层,128个神经元,激活函数为relu,这一层命名为d1 self.d2 = Dense(10, activation = "softmax") #搭建网络块,全连接层,10个神经元,激活函数为softmax,这一层命名为d2 def call(self, x): x = self.flatten(x) #调用网络块 x = self.d1(x) #调用网络块 y = self.d2(x) #调用网络块 return y model = mnistModel() #第四步,model.compile() model.compile( #model.compile()配置训练方法 optimizer = "adam", #设置优化器为adam loss = tf.keras.losses.SparseCategoricalCrossentropy(from_logits = False), #损失函数为SparseCategoricalCrossentropy,from_logits为FALSE,代表输出是概率分布 metrics = ['sparse_categorical_accuracy'] #标注网络评价指标为sparse_categorical_accuracy ) #第五步,model.fit() model.fit( #model.fit()用来执行训练过程 x_train, #训练集的输入 y_train, #训练集的标签 batch_size = 32, #每一次喂入的数据是32 epochs = 5, #迭代数是5 validation_data = (x_test, y_test), #测试集的输入特征和标签 validation_freq = 1 #测试的间隔次数 ) #第六步,model.summary() model.summary() #输入神经网络的网络参数
结果为:
省略......
58720/60000 [============================>.] - ETA: 0s - loss: 0.0461 - sparse_categorical_accuracy: 0.9854
59136/60000 [============================>.] - ETA: 0s - loss: 0.0463 - sparse_categorical_accuracy: 0.9853
59552/60000 [============================>.] - ETA: 0s - loss: 0.0463 - sparse_categorical_accuracy: 0.9853
59968/60000 [============================>.] - ETA: 0s - loss: 0.0464 - sparse_categorical_accuracy: 0.9853
60000/60000 [==============================] - 9s 147us/sample - loss: 0.0464 - sparse_categorical_accuracy: 0.9853 - val_loss: 0.0808 - val_sparse_categorical_accuracy: 0.9751
Model: "mnist_model"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
flatten (Flatten) multiple 0
_________________________________________________________________
dense (Dense) multiple 100480
_________________________________________________________________
dense_1 (Dense) multiple 1290
=================================================================
Total params: 101,770
Trainable params: 101,770
Non-trainable params: 0
_________________________________________________________________
最后
以上就是长情豌豆为你收集整理的tensorflow中使用class实现手写数字识别tensorflow中使用class实现手写数字识别的全部内容,希望文章能够帮你解决tensorflow中使用class实现手写数字识别tensorflow中使用class实现手写数字识别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复