2.构造神经元网络模型

from tensorflow import keras
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
fashion_mnist=keras.datasets.fashion_mnist
# 加载数据
# 训练的数据集 训练的label 测试的数据集 测试的label
(train_images,train_label),(test_images,test_label)=fashion_mnist.load_data()
# 输出训练图片的大小  图片数 图片长和宽的像素
# print(train_images.shape)
# 标签的张数
# print(train_label.shape)
# 输出前五个标签
# print(train_label[:5])
# plt.imshow(train_images[0]);

# 当出现过拟合的情况时,提前终止训练
class myCallback(tf.keras.callbacks.Callback):
    def on_epoch_end(self,epoch,logs={}):
        if(logs.get('loss')<0.4):
            print('取消训练')
            self.model.stop_training=True

callbacks=myCallback()
mnist=tf.keras.datasets.fashion_mnist
# 构造神经元网络模型  共有三层神经元网络
model=keras.Sequential([
    # 指定输入的shape是28*28的   输入层
    keras.layers.Flatten(input_shape=(28,28)),
    # 中间层128个神经元    relu函数只有输入是正数的时候才有输出,输入是负数的时候没有输出
    keras.layers.Dense(128,activation=tf.nn.relu),
    # 分10类,具有10个神经元  输出层   softmax把输出压缩在0和1之间
    keras.layers.Dense(10,activation=tf.nn.softmax)
])

# 使训练效果更好
train_images=train_images/255
# model.summary()
# tf.optimizers.Adam()函数用来做优化,大致意思是 将开始的学习率设置为一个较大的值,然后根据次数的增多,动态的减小学习率,以实现效率和效果的兼得。
# tf.losses.sparse_categorial_crossentropy 用来返回每个样本的损失
model.compile(optimizer=tf.keras.optimizers.Adam(),loss=tf.keras.losses.sparse_categorical_crossentropy,metrics=['accuracy'])


# 开始训练模型
model.fit(train_images,train_label,epochs=5)
#
# 测试训练模型准不准
test_images_scaled=test_images/255
model.evaluate(test_images_scaled,test_label)

# 利用单张图片判断模型是否准确

print(np.argmax(model.predict([[test_images[0]/255]])))
print(test_label[0])
plt.imshow(test_images[0])

根据网络上的图片,让机器自动学习如何识别衣服,裤子,靴子等物品

最终得到的结果对比为:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豆豆豆豆芽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值