21年9月8日——NN
import tensorflow as tf
print(tf.__version__)
mnist = tf.keras.datasets.fashion_mnist
(training_images, training_labels), (test_images, test_labels) = mnist.load_data()
class myCallback(tf.keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs = {}):
if(logs.get('loss') < 0.4):
print("\nLoss is low so cancelling training!")
self.model.stop_training = True
callbacks = myCallback()
import matplotlib.pyplot as plt
plt.imshow(training_images[1])
print(training_labels[1])
print(training_images[1])
training_images = training_images / 255.0
test_images = test_images / 255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape = (28, 28)),
tf.keras.layers.Dense(128, activation = tf.nn.relu),
tf.keras.layers.Dense(10, activation = tf.nn.softmax)]
)
model.compile(optimizer = tf.optimizers.Adam(),
loss = 'sparse_categorical_crossentropy')
model.fit(training_images, training_labels, epochs = 5, callbacks = [callbacks])
model.evaluate(test_images, test_labels)
fashion_mnist是一个数据集,其中包含70000个样本,10个种类的衣物。
class myCallback这个类表明当loss低于0.4就停止(但是这一轮仍会做完)
training_images = training_images / 255.0
test_images = test_images / 255.0
这个除以255目的是归一化,神经网络只处理0-1的数据。
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape = (28, 28)),
tf.keras.layers.Dense(128, activation = tf.nn.relu),
tf.keras.layers.Dense(10, activation = tf.nn.softmax)]
)
Flatten扁平化, 输入层就是扁平化后的28*28个数据;隐层就是128个神经元,其中激活函数用的relu;输出层只有10个输出,因为这个数据集里只有10个种类,激活函数用的是softmax(常用于多分类问题)。
然后剩下的就跟前面是一样的了。
代码:https://colab.research.google.com/drive/1kisNiXhs0-zAnQuAEavCDRtbZKsi3ubc#scrollTo=L9iCc09qDuW2