diff --git a/手写数字识别1.py b/手写数字识别1.py deleted file mode 100644 index d91fd00..0000000 --- a/手写数字识别1.py +++ /dev/null @@ -1,93 +0,0 @@ -#调用 TensorFlow -from __future__ import absolute_import, division, print_function, unicode_literals - -import tensorflow as tf - -from tensorflow.keras.layers import Dense, Flatten, Conv2D -from tensorflow.keras import Model - -#载入并准备好 MNIST 数据集: -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 - -# Add a channels dimension -x_train = x_train[..., tf.newaxis] -x_test = x_test[..., tf.newaxis] - - -#使用 tf.data 来将数据集切分为 batch 以及混淆数据集: -train_ds = tf.data.Dataset.from_tensor_slices( - (x_train, y_train)).shuffle(10000).batch(32) -test_ds = tf.data.Dataset.from_tensor_slices((x_test, y_test)).batch(32) - -#使用 Keras 模型子类化(model subclassing) API 构建 tf.keras 模型: -class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self.conv1 = Conv2D(32, 3, activation='relu') - self.flatten = Flatten() - self.d1 = Dense(128, activation='relu') - self.d2 = Dense(10, activation='softmax') - - def call(self, x): - x = self.conv1(x) - x = self.flatten(x) - x = self.d1(x) - return self.d2(x) - - -model = MyModel() - -#为训练选择优化器与损失函数: -loss_object = tf.keras.losses.SparseCategoricalCrossentropy() - -optimizer = tf.keras.optimizers.Adam() - -#选择衡量指标来度量模型的损失值(loss)和准确率(accuracy)。这些指标在 epoch 上累积值,然后打印出整体结果 -train_loss = tf.keras.metrics.Mean(name='train_loss') -train_accuracy = tf.keras.metrics.SparseCategoricalAccuracy( - name='train_accuracy') - -test_loss = tf.keras.metrics.Mean(name='test_loss') -test_accuracy = tf.keras.metrics.SparseCategoricalAccuracy( - name='test_accuracy') - -#使用 tf.GradientTape 来训练模型 -@tf.function -def train_step(images, labels): - with tf.GradientTape() as tape: - predictions = model(images) - loss = loss_object(labels, predictions) - gradients = tape.gradient(loss, model.trainable_variables) - optimizer.apply_gradients(zip(gradients, model.trainable_variables)) - - train_loss(loss) - train_accuracy(labels, predictions) - -#测试模型: -@tf.function -def test_step(images, labels): - predictions = model(images) - t_loss = loss_object(labels, predictions) - - test_loss(t_loss) - test_accuracy(labels, predictions) - - -EPOCHS = 5 - -for epoch in range(EPOCHS): - for images, labels in train_ds: - train_step(images, labels) - - for test_images, test_labels in test_ds: - test_step(test_images, test_labels) - - template = 'Epoch {}, Loss: {}, Accuracy: {}, Test Loss: {}, Test Accuracy: {}' - print(template.format(epoch + 1, - train_loss.result(), - train_accuracy.result() * 100, - test_loss.result(), - test_accuracy.result() * 100))