every blog every motto:

0. 前言

深度可分离卷积神经网络实战

1. 代码部分

1. 导入模块

import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import sklearn
import pandas as pd
import os
import sys
import time
import tensorflow as tf
from tensorflow import kerasos.environ['CUDA_VISIBLE_DEVICES'] = '/gpu:0'
print(tf.__version__)
print(sys.version_info)
for module in mpl,np,pd,sklearn,tf,keras:print(module.__name__,module.__version__)

2. 读取数据

fashion_mnist = keras.datasets.fashion_mnist
# print(fashion_mnist)
(x_train_all,y_train_all),(x_test,y_test) = fashion_mnist.load_data()
x_valid,x_train = x_train_all[:5000],x_train_all[5000:]
y_valid,y_train = y_train_all[:5000],y_train_all[5000:]
# 打印格式
print(x_valid.shape,y_valid.shape)
print(x_train.shape,y_train.shape)
print(x_test.shape,y_test.shape)

3. 数据归一化

# 数据归一化
from sklearn.preprocessing import StandardScalerscaler = StandardScaler()
# x_train:[None,28,28] -> [None,784]
x_train_scaled = scaler.fit_transform(x_train.astype(np.float32).reshape(-1,1)).reshape(-1,28,28,1)
x_valid_scaled = scaler.transform(x_valid.astype(np.float32).reshape(-1,1)).reshape(-1,28,28,1)
x_test_scaled = scaler.transform(x_test.astype(np.float32).reshape(-1,1)).reshape(-1,28,28,1)

4. 构建模型

# tf.keras.models.Sequential()
# 构建模型
model = keras.models.Sequential()# 卷积神经网络
# 输入
model.add(keras.layers.Conv2D(filters=32,kernel_size=3,padding="same",activation='selu',input_shape=(28,28,1)))model.add(keras.layers.SeparableConv2D(filters=32,kernel_size=3,padding='same',activation='selu'))
model.add(keras.layers.MaxPool2D(pool_size=2))model.add(keras.layers.SeparableConv2D(filters=64,kernel_size=3,padding="same",activation='selu'))
model.add(keras.layers.SeparableConv2D(filters=64,kernel_size=3,padding='same',activation='selu'))
model.add(keras.layers.MaxPool2D(pool_size=2))model.add(keras.layers.SeparableConv2D(filters=128,kernel_size=3,padding="same",activation='selu'))
model.add(keras.layers.SeparableConv2D(filters=128,kernel_size=3,padding='same',activation='selu'))
model.add(keras.layers.MaxPool2D(pool_size=2))# 展平
model.add(keras.layers.Flatten())# 全连接层
model.add(keras.layers.Dense(128,activation='relu'))# 输出层
model.add(keras.layers.Dense(10,activation="softmax"))#
model.compile(loss='sparse_categorical_crossentropy',optimizer='sgd',metrics=['accuracy'])
model.summary()

5. 开始训练

# 回调函数 Tensorboard(文件夹)\earylystopping\ModelCheckpoint(文件名)
logdir = os.path.join("separable_cnn-selu-callbacks")
print(logdir)
if not os.path.exists(logdir):os.mkdir(logdir)
# 文件名
output_model_file = os.path.join(logdir,"fashion_mnist_model.h5")callbacks = [keras.callbacks.TensorBoard(logdir),keras.callbacks.ModelCheckpoint(output_model_file,save_best_only=True),keras.callbacks.EarlyStopping(patience=5,min_delta=1e-3),
]
# 开始训练
history = model.fit(x_train_scaled,y_train,epochs=10,validation_data=(x_valid_scaled,y_valid),callbacks=callbacks)

6. 学习曲线

# 画图
def plot_learning_curves(history):pd.DataFrame(history.history).plot(figsize=(8,5))plt.grid(True)plt.gca().set_ylim(0,1)plt.show()
plot_learning_curves(history)# 损失函数,刚开始下降慢的原因
# 1. 参数众多,训练不充分
# 2. 梯度消失 -》 链式法则中
# 解决: selu缓解梯度消失

7. 测试集上

model.evaluate(x_test_scaled,y_test)

从零基础入门Tensorflow2.0 ----六、28 深度可分离卷积神经网络相关推荐

  1. 视频编码零基础入门(0):零基础,史上最通俗视频编码技术入门

    [来源申明]本文引用了微信公众号"鲜枣课堂"的<视频编码零基础入门>文章内容.为了更好的内容呈现,即时通讯网在引用和收录时内容有改动,转载时请注明原文来源信息,尊重原作 ...

  2. Datawhale零基础入门NLP day5/Task5基于深度学习的文本分类2

    基于深度学习的文本分类 本章将继续学习基于深度学习的文本分类. 学习目标 学习Word2Vec的使用和基础原理 学习使用TextCNN.TextRNN进行文本表示 学习使用HAN网络结构完成文本分类 ...

  3. Datawhale零基础入门NLP赛事 - Task5 基于深度学习的文本分类2

    在上一章节,我们通过FastText快速实现了基于深度学习的文本分类模型,但是这个模型并不是最优的.在本章我们将继续深入. 基于深度学习的文本分类 本章将继续学习基于深度学习的文本分类. 学习目标 学 ...

  4. Python零基础入门习题(六)红楼梦人物出场次数统计

    前言 Python语言简单易用,可读性强.在了解基础语法后,你就可以来尝试解决以下的题目.放心,本系列的文章都对新手非常友好. 一.生日悖论 生日悖论是指在不少于 23 个人中至少有两人生日相同的概率 ...

  5. 零基础入门学习Python(28)文件系统

    模块 模块是一个包含所有你定义的函数和变量的文件,其后缀是".py", 模块可以被别的程序所引入,以使用该模块中的函数等功能 1.OS模块(Operating System操作系统 ...

  6. Apache Flink 零基础入门(十六)Flink DataStream transformation

    Operators transform one or more DataStreams into a new DataStream. Operators操作转换一个或多个DataStream到一个新的 ...

  7. SQL零基础入门学习(七)

    SQL零基础入门学习(六) SQL BETWEEN 操作符 BETWEEN 操作符选取介于两个值之间的数据范围内的值.这些值可以是数值.文本或者日期. SQL BETWEEN 语法 SELECT co ...

  8. 一期完结《一篇文章让你从HTML零基础入门前端开发》12.28

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VRcXH9FM-1672214813897)(./assets/%E7%8E%84%E5%AD%90Shaer-%E4% ...

  9. 生日祝福小程序_广告配音剪映零基础入门教程第二十六篇:如何给朋友制作生日祝福视频...

    经常听到小伙伴问到生日祝福视频怎么做,当然我想既然要为他人做生日祝福视频,那么这个人必定是自己身边比较重要的人,而生日又是每个人都是非常重要的,在这种充满意义的时刻,我们想给自己极其重要的人送上一份祝 ...

  10. SQL零基础入门学习(十六)

    SQL零基础入门学习(十五) SQL函数 SQL MAX() 函数 MAX() 函数返回指定列的最大值. SQL MAX() 语法 SELECT MAX(column_name) FROM table ...

最新文章

  1. Ubuntu 上创建常用磁盘阵列
  2. mysql数据库备份总结_mysql中mysqlhotcopy备份数据库总结
  3. python colormap函数_python-使用由x,y位置定义的rgb值创建colormap
  4. 数据防泄漏(中文版)
  5. 编程方法学25:设计实用社交网络
  6. ITK:分段线性曲线的数据结构
  7. Linux决心书/李世超
  8. 【Elasticsearch】请在64位平台上使用Lucene的MMapDirectory
  9. python将空格变成换行_Python基础之PEP8规范(代码写作规范)
  10. 拓展名php,取扩展名_php
  11. TensorFlow Attention
  12. 阿里MySQL读写一致_缓存与数据库读写一致的解决方案
  13. 传统服务化(SOA)与微服务(Micro Service)的融合之道 1
  14. 优化数据库的思想及SQL语句优化的原则
  15. [转载]百分之百自动登录2345王牌技术员联盟源代码(delphi)
  16. vmware硬件兼容官方查询地址
  17. 硬件工程师的心路历程竟让人泪目,一个单片机学员的自我救赎
  18. Vmware 虚拟机安装教程
  19. 【个人总结版】实验报告书写指导
  20. Segmentation Fault错误原因总结

热门文章

  1. docker自定义网络
  2. html手机页面怎么长按不出复制,HTML -----对于手机页面长按会粘贴复制的禁用
  3. linux php zend load,在Linux系统中为PHP5.3安装Zend Guard Loader
  4. c语言静态数组是什么意思,C语言静态数组实现栈操作
  5. java实现电子面单pdf生成_福利!使用Aspose.Words在Java中将Word格式转换为PDF完整指南...
  6. mysql集群 自增_为什么我们要从MySQL迁移到TiDB?
  7. python opcua_理解python中的免费OPC/UA代码
  8. python基于窗体的播放器_基于Python3的终端播放器 – MellPlayer
  9. ML/DL-复习笔记【八】- 信息熵与相对熵(KL散度)
  10. OpenCV版本与EmguCV版本匹配问题