3从0实现softmax训练,实现Fashion-MNIST分类

一. 数据集介绍

  1. Fashion-MNIST由10个类别的图像组成, 每个类别由训练数据集(train dataset)中的6000张图像 和测试数据集(test dataset)中的1000张图像组成。 因此,训练集和测试集分别包含60000和10000张图像。 测试数据集不会用于训练,只用于评估模型性能。
  2. Fashion-MNIST中包含的10个类别,分别为t-shirt(T恤)、trouser(裤子)、pullover(套衫)、dress(连衣裙)、coat(外套)、sandal(凉鞋)、shirt(衬衫)、sneaker(运动鞋)、bag(包)和ankle boot(短靴)

二. 训练模型

  1. 实质也是一个线性回归模型,softmax得到的是各个类别的概率,这些概率总和为1,
  2. 训练过程跟之前一样,定义模型、定义损失函数、分类精度只是方便我们衡量检测效果,不参与训练过程的参数优化,
  3. 训练代码:
import tensorflow as tf
from IPython import display
from d2l import tensorflow as d2l

# 载入数据集,分为训练集和测试集,图片尺寸28*28
batch_size = 256
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)

# 初始化模型参数
# 图片尺寸为28*28=784,拉长w就是784 y = w * X + b
# 输出为10个种类各自的概率,概率和为1
num_inputs = 784
num_outputs = 10

W = tf.Variable(tf.random.normal(shape=(num_inputs, num_outputs), mean=0, stddev=0.01))

b = tf.Variable(tf.zeros(num_outputs))

# 定义softmax分类
# tf.reduce_sum(X, 0, keepdims=True) X列求和
# tf.reduce_sum(X, 1, keepdims=True) X行求和
def softmax(X):
  X_exp = tf.exp(X)
  partition = tf.reduce_sum(X_exp, 1, keepdims=True)
  return X_exp / partition

# 定义模型 y = w * X + b
def net(X):
  return softmax(tf.matmul(tf.reshape(X, (-1, W.shape[0])), W) + b)

# 定义损失函数,使用的是交叉熵损失函数
# 尺寸格式要转换为一样
def cross_entropy(y_hat,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值