神经网络入门及改进优化——CNN识别Fashion-MNIST数据集(Python实现)

适用于 TensorFlow 2.3 及 keras 2.4.3 ,Python版本为3.8

如果你使用新版本的第三方库,请考虑降级为本文适用的版本,或者自行查阅第三方库的升级文档修改代码。

图像分类数据集中最常用的是手写数字识别数据集MNIST 。但大部分模型在MNIST上的分类精度都超过了95%。为了更直观地观察算法之间的差异,我们将使用一个图像内容更加复杂的数据集Fashion-MNIST 

FashionMNIST 是图像数据集,它是由 Zalando(一家德国的时尚科技公司)旗下的研究部门提供。其涵盖了来自 10 种类别的共 7 万个不同商品的正面图片。FashionMNIST 的大小、格式和训练集/测试集划分与原始的 MNIST 完全一致。60000/10000 的训练测试数据划分,28x28 的灰度图片。方便我们进行测试各种神经网络算法。 该数据集识别难度远大于原有的MNIST数据集。
这里写图片描述


数据库导入

所有代码都用keras.datasets接口来加载fashion_mnist数据,从网络上直接下载fashion_mnist数据,无需从本地导入,十分方便。

这意味着你可以将代码中的

(X_train, y_train), (X_test, y_test) = fashion_mnist.load_data()

修改为(X_train, y_train), (X_test, y_test) = mnist.load_data()

就可以直接对原始的MN

Keras是一个高级神经网络API,它可以在TensorFlow等深度学习库之上运行。如果你想使用Keras的卷积神经网络(Convolutional Neural Network,CNN)来识别Fashion-MNIST数据集,这是一个包含10种服装类别(如T恤、牛仔裤、鞋等)的手写数字图像的数据集,可以按照以下步骤操作: 1. **导入必要的库**: ```python import tensorflow as tf from tensorflow.keras import datasets, layers, models ``` 2. **加载Fashion-MNIST数据**: ```python (train_images, train_labels), (test_images, test_labels) = datasets.fashion_mnist.load_data() ``` 3. **预处理数据**: - 将图像转换为通道在最后的维度 ```python train_images, test_images = train_images / 255.0, test_images / 255.0 train_images = train_images[..., tf.newaxis] test_images = test_images[..., tf.newaxis] ``` 4. **构建CNN模型**: ```python model = models.Sequential([ layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)), layers.MaxPooling2D((2, 2)), layers.Conv2D(64, (3, 3), activation='relu'), layers.MaxPooling2D((2, 2)), layers.Flatten(), # 展平为一维数组以便输入全连接层 layers.Dense(128, activation='relu'), layers.Dropout(0.5), # 防止过拟合 layers.Dense(10, activation='softmax') # 输出层,10个节点对应10个类别 ]) ``` 5. **编译模型**: ```python model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy']) ``` 6. **训练模型**: ```python model.fit(train_images, train_labels, epochs=10, validation_split=0.1) ``` 7. **评估模型性能**: ```python test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2) print(f'Test accuracy: {test_acc}') ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值