本博客与手写数字识别大同小异。

1.导入所需库

import tensorflow as tf
from tensorflow.keras import datasets, layers, models
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Conv2D, Flatten, Dropout, MaxPooling2D
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import os
import numpy as np
import matplotlib.pyplot as plt

2.数据准备

本阶段需要做的工作:
①下载好我们所需要的服装图像库。
②将图片标准化。
③调整图像的大小。
(类比与手写数字识别的数据处理阶段)
训练集和测试集分别为60000和10000

def DataPre():# 导入数据(train_x, train_y), (test_x, test_y) = datasets.fashion_mnist.load_data()# 标准化train_x, test_x = train_x / 255.0, test_x / 255.0# 调整数据???train_x = train_x.reshape((60000, 28, 28, 1))test_x = test_x.reshape((10000, 28, 28, 1))return train_x,train_y,test_x,test_y

3.搭建网络

网络结构为:3层卷积池化层+Flatten+两层全连接层。
(可以尝试一下更深的网络结构,硬件条件允许的情况下

def ModelBuild():# 搭建模型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.Conv2D(64, (3, 3), activation='relu'),layers.Flatten(),layers.Dense(64, activation=tf.nn.softmax),layers.Dense(10)])model.summary()  # 打印网络结构model.compile(optimizer = 'adam',loss = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),metrics = ['accuracy'])return model

网络模型为:

Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #
=================================================================
conv2d (Conv2D)              (None, 26, 26, 32)        320
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 13, 13, 32)        0
_________________________________________________________________
conv2d_1 (Conv2D)            (None, 11, 11, 64)        18496
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 5, 5, 64)          0
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 3, 3, 64)          36928
_________________________________________________________________
flatten (Flatten)            (None, 576)               0
_________________________________________________________________
dense (Dense)                (None, 0)                 0
_________________________________________________________________
dense_1 (Dense)              (None, 64)                64
_________________________________________________________________
dense_2 (Dense)              (None, 10)                650
=================================================================
Total params: 56,458
Trainable params: 56,458
Non-trainable params: 0
_________________________________________________________________
Train on 60000 samples, validate on 10000 samples

4.模型训练

由于硬件原因,epochs设置的是10,经过实验证明,epochs在50的时候,效果是明显好于10的情况。

def Modeltrain(model,train_x,train_y,test_x,test_y):# 训练模型history = model.fit(train_x, train_y, epochs=10,validation_data=(test_x, test_y))return history

5.结果可视化

 accuracy = history.history["accuracy"]test_accuracy = history.history["val_accuracy"]loss = history.history["loss"]test_loss = history.history["val_loss"]epochs_range = range(10)plt.figure(figsize=(50, 5))plt.subplot(1, 2, 1)plt.plot(epochs_range, accuracy, label="Training Acc")plt.plot(epochs_range, test_accuracy, label="Test Acc")plt.legend()plt.title("Training and Test Acc")plt.subplot(1, 2, 2)plt.plot(epochs_range, loss, label="Training loss")plt.plot(epochs_range, test_loss, label="Test loss")plt.legend()plt.title("Training and Test loss")plt.show()

6.结果

10000/1 - 1s - loss: 0.2716 - accuracy: 0.8840


并没有出现过拟合的情况,但是准确率并不是特别高,在增加epochs的情况下是可以提高准确率的。但是训练速度会明显变慢,而且提升效果并不大。可以尝试一下利用迁移学习,利用别人搭建好的网络,准确率可能会上升。
努力加油a啊

深度学习之基于卷积神经网络实现服装图像识别相关推荐

  1. Python深度学习实例--基于卷积神经网络的小型数据处理(猫狗分类)

    Python深度学习实例--基于卷积神经网络的小型数据处理(猫狗分类) 1.卷积神经网络 1.1卷积神经网络简介 1.2卷积运算 1.3 深度学习与小数据问题的相关性 2.下载数据 2.1下载原始数据 ...

  2. 深度学习之基于卷积神经网络(VGG16)实现性别判别

    无意间在kaggle上发现的一个数据集,旨在提高网络模型判别男女的准确率,博主利用迁移学习试验了多个卷积神经网络,最终的模型准确率在95%左右.并划分了训练集.测试集.验证集三类,最终在验证集上的准确 ...

  3. 深度学习之基于卷积神经网络(VGG16CNN)实现海贼王人物识别

    硬件问题真的是搞机器学习的一个痛处,更何况这只是入门级别的. 基于CNN和VGG16,实现对海贼王人物的分类识别.本次自己动手搭建了VGG16 网络,并且和迁移学习的VGG16的网络的实验效果做了一个 ...

  4. 深度学习之基于卷积神经网络实现花朵识别

    类比于猫狗大战,利用自己搭建的CNN网络和已经搭建好的VGG16实现花朵识别. 1.导入库 注:导入的库可能有的用不到,之前打acm时留下的毛病,别管用不用得到,先写上再说 import tensor ...

  5. 深度学习之基于卷积神经网络实现超大Mnist数据集识别

    在以往的手写数字识别中,数据集一共是70000张图片,模型准确率可以达到99%以上的准确率.而本次实验的手写数字数据集中有120000张图片,而且数据集的预处理方式也是之前没有遇到过的.最终在验证集上 ...

  6. 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-03-基于Python的LeNet之LR

    原地址可以查看更多信息 本文主要参考于:Classifying MNIST digits using Logistic Regression  python源代码(GitHub下载 CSDN免费下载) ...

  7. 【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理(1)

    上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...

  8. 深度学习笔记:卷积神经网络的可视化--卷积核本征模式

    目录 1. 前言 2. 代码实验 2.1 加载模型 2.2 构造返回中间层激活输出的模型 2.3 目标函数 2.4 通过随机梯度上升最大化损失 2.5 生成滤波器模式可视化图像 2.6 将多维数组变换 ...

  9. 吴恩达.深度学习系列-C4卷积神经网络-W2深度卷积模型案例

    吴恩达.深度学习系列-C4卷积神经网络-W2深度卷积模型案例 (本笔记部分内容直接引用redstone的笔记http://redstonewill.com/1240/.原文整理的非常好,引入并添加我自 ...

最新文章

  1. 如何快速定位当前数据库消耗CPU最高的sql语句?
  2. 出去之后,好好做人!华为两年,苦乐参半!
  3. mysql 5.6.14 64位_如何在64位WIN7下安装64位的解压版MySQLmysql-5.6.14
  4. [译]学习IPython进行交互式计算和数据可视化(四)
  5. es 创建索引报错_ES添加映射报错analyzer [ik_max_word] not found for field [title]
  6. VHDL简易电子琴的设计
  7. 约瑟夫问题(java实现)
  8. 文件夹或者文件比对工具 Beyond Compare
  9. SEO关键字优化策略-Google Analytics提高关键字转化的的6步骤
  10. Java8 forEach 使用
  11. linux下tomcat启动后出现多个java进程
  12. 拓端tecdat|R语言中如何使用排队论预测等待时间?
  13. WebSocket 协议 RFC 文档(全中文翻译) 1
  14. 高等代数——大学高等代数课程创新教材(丘维声)——3.8笔记+习题
  15. 学习计算机编程(IT、偏网站开发)的参考学习网址syk
  16. 小米note位置服务器,小米Note
  17. DDD案例(2):从领域分析到代码实现
  18. 思科路由器各种show命令的输出详解
  19. Java Web实现 使用浏览器从服务器下载文件
  20. 【转】JS VLC插件

热门文章

  1. Android—View事件分发与View子类
  2. make check 时出现:Error importing caffe
  3. pycharm运行完第一个程序,怎么运行第二个程序
  4. GoogLeNet系列解读
  5. php总是报错,php - 简单工厂模式中的问题,总是报错
  6. matlab有模糊分析,用matlab进行模糊综合评判_模糊综合评判matlab
  7. mysql savepoint 什么意思_关于MySQL中savepoint语句使用时所出现的错误
  8. 启动欢迎页面时,Android Studio设置全屏Activity
  9. input 中的autoComplete属性
  10. 第10章 springboot是什么