1-D神经网络实现fashion mnist数据集的训练

介绍

Fashion MNIST是一个类似于MNIST手写数字数据集的图像分类数据集,它包含10个类别的70,000张28x28像素的灰度图像。Fashion MNIST数据集的目的是为了替代MNIST数据集,因为MNIST数据集已经过于简单,不再是一个良好的图像分类数据集。Fashion MNIST数据集可以用于测试机器学习算法的性能,例如分类、图像处理等领域。
我们通过引入tf.keras.datasets.fashion_mnist来获取Fashion MNIST数据集

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
fashion_mnist = tf.keras.datasets.fashion_mnist

1-D神经网络

1-D神经网络是一种基于序列数据的神经网络模型,它的输入数据是1维的向量或时间序列。与传统的2-D卷积神经网络不同,1-D神经网络的卷积核只在一个维度上移动,通常用于处理自然语言或时间序列数据。

在本文中,我们将使用一种基于1-D卷积层和全连接层的1-D神经网络模型,它可以有效地学习图像的特征,达到分类的目的。该模型包含多个卷积层和全连接层,其中卷积层提取图像特征,全连接层用于分类。
网络的基本结构如下:

 model = tf.keras.Sequential([
     tf.keras.layers.Conv1D(filters=32, kernel_size=3, strides=1, padding='same', activation='relu', input_shape=(784,1)),
     tf.keras.layers.MaxPool1D(pool_size=2, strides=2, padding='same'),
     tf.keras.layers.Conv1D(filters=64, kernel_size=3, strides=1, padding='same', activation='relu'),
     tf.keras.layers.Flatten(),
     tf.keras.layers.Dense(units=10, activation='softmax')
 ])

数据预处理

在进行训练之前,我们需要对数据集进行预处理,以便更好地训练模型。预处理的步骤如下:
1.数据集划分:将数据集划分为训练集、验证集和测试集,以便评估模型的性能。
2.数据归一化:将像素值归一化到0到1之间,可以提高模型的收敛速度和准确率。

(x_train_all, y_train_all), (x_test_all, y_test_all) = fashion_mnist.load_data()
np.random.seed(42)
indices = np.random.choice(10000, 5000, replace=False)
x_selected = x_train_all[indices]
y_selected = y_train_all[indices]
x_train, x_valid, x_test = np.split(x_selected, [3500, 4500])
y_train, y_valid, y_test = np.split(y_selected, [3500, 4500])
x_train = x_train.reshape(-1, 28,28,1) / 255.0
x_valid = x_valid.reshape(-1, 28,28,1) / 255.0
x_test = x_test.reshape(-1, 28,28,1) / 255.0
y_train = tf.keras.utils.to_categorical(y_train, num_classes=10)
y_valid = tf.keras.utils.to_categorical(y_valid, num_classes=10)
y_test = tf.keras.utils.to_categorical(y_test, num_classes=10)

神经网络模型训练

1-D神经网络模型的训练可以通过以下步骤完成:
编译模型:在编译模型之前,我们需要设置损失函数、优化器和评估指标。
训练模型:训练模型时,我们需要指定训练的batch_size、epochs等参数

model.compile(optimizer='adam',
               loss='categorical_crossentropy',
               metrics=['accuracy'])
model.fit(x_train, y_train, batch_size=32, epochs=50, validation_data=(x_valid, y_valid))

神经网络模型测试

model_1d=model.evaluate(x_test, y_test)
y_prob = model.predict(x_test)

同时可以引入confusion_matrix来绘制混淆矩阵

y_pred = np.argmax(y_prob, axis=1)
y_true = np.argmax(y_test, axis=1)
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_true, y_pred)
print(cm)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值