TF_1

对图像进行分类。

1.数据预处理

2.建立模型

3.编译模型

4.训练模型

5.模型预测

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

from tensorflow import keras

fashion_mnist = keras.datasets.fashion_mnist

(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()

class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
               'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']

print(train_images.shape)
print(len(train_images))

#plt.figure(1)
#plt.imshow(train_images[1])
#plt.colorbar()
#plt.grid(False)
#plt.show()

#像素大小弄到0~1
#plt.figure(2)
#plt.imshow(a[1])
#plt.grid(False)
#plt.colorbar()
#plt.show()
train_images = train_images / 255.0

test_images = test_images / 255.0
#1.搭建模型
model = keras.Sequential(
    [
        keras.layers.Flatten(input_shape=(28,28)),
        keras.layers.Dense(128,activation="relu"),
        keras.layers.Dense(10,activation="softmax")
    ]
)
#下面这是什么啊
#2.编译创建好的模型
model.compile(optimizer='adam', #optimizer用来指定优化方式
              loss='sparse_categorical_crossentropy',  #loss  用来指定损失函数
              metrics=['accuracy'])  # metrics  列表类型 指定衡量模型的指标

#3.训练模型
model.fit(train_images,train_labels,epochs = 10)

#4.预测
test_loss ,test_acc = model.evaluate(test_images,test_labels)
print("预测准确率:",test_acc)
predictions = model.predict(test_images)
#预测某张图片就用predictions[x] x是下标
#prediction[x]会返回一个array,他们代表着是哪一类的概率,哪个数字最大,就是被分到了哪一类
#np.argmax(predictions[0])
np.argmax(predictions[0])

数据预处理之前呢,把图像从0~255归到0~1再进入网络。

归一化是为了加快训练网络的收敛性,可以不进行归一化处理;
       归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在-1--+1之间是统计的坐标分布。归一化有同一、统一和合一的意思。无论是为了建模还是为了计算,首先基本度量单位要同一,神经网络是以样本在事件中的统计分别几率来进行训练(概率计算)和预测的,归一化是同一在0-1之间的统计概率分布;当所有样本的输入信号都为正值时,与第一隐含层神经元相连的权值只能同时增加或减小,从而导致学习速度很慢。为了避免出现这种情况,加快网络学习速度,可以对输入信号进行归一化,使得所有样本的输入信号其均值接近于0或与其均方差相比很小。
       归一化是因为sigmoid函数的取值是0到1之间的,网络最后一个节点的输出也是如此,所以经常要对样本的输出归一化处理。所以这样做分类的问题时用[0.9 0.1 0.1]就要比用[1 0 0]要好。
      但是归一化处理并不总是合适的,根据输出值的分布情况,标准化等其它统计变换方法有时可能更好。

参考:https://blog.csdn.net/qq_41383956/article/details/88593538

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值