从零基础入门Tensorflow2.0 ----六、27 卷积神经网络(2)
every blog every motto:
0. 前言
卷积神经网络实战,激活函数selu
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.Conv2D(filters=32,kernel_size=3,padding='same',activation='selu'))
model.add(keras.layers.MaxPool2D(pool_size=2))model.add(keras.layers.Conv2D(filters=64,kernel_size=3,padding="same",activation='selu'))
model.add(keras.layers.Conv2D(filters=64,kernel_size=3,padding='same',activation='selu'))
model.add(keras.layers.MaxPool2D(pool_size=2))model.add(keras.layers.Conv2D(filters=128,kernel_size=3,padding="same",activation='selu'))
model.add(keras.layers.Conv2D(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='selu'))# 输出层
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("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. 测试集上
从零基础入门Tensorflow2.0 ----六、27 卷积神经网络(2)相关推荐
- 视频编码零基础入门(0):零基础,史上最通俗视频编码技术入门
[来源申明]本文引用了微信公众号"鲜枣课堂"的<视频编码零基础入门>文章内容.为了更好的内容呈现,即时通讯网在引用和收录时内容有改动,转载时请注明原文来源信息,尊重原作 ...
- 零基础入门学习Python(27)-文件2
完成任务 #先男女分开,再对话段落分开 boy = [] girl =[] count = 1 ori = open(r'C:\Users\Xuyunfeng\Desktop\record.txt') ...
- Python零基础入门习题(六)红楼梦人物出场次数统计
前言 Python语言简单易用,可读性强.在了解基础语法后,你就可以来尝试解决以下的题目.放心,本系列的文章都对新手非常友好. 一.生日悖论 生日悖论是指在不少于 23 个人中至少有两人生日相同的概率 ...
- Apache Flink 零基础入门(十六)Flink DataStream transformation
Operators transform one or more DataStreams into a new DataStream. Operators操作转换一个或多个DataStream到一个新的 ...
- SQL零基础入门学习(七)
SQL零基础入门学习(六) SQL BETWEEN 操作符 BETWEEN 操作符选取介于两个值之间的数据范围内的值.这些值可以是数值.文本或者日期. SQL BETWEEN 语法 SELECT co ...
- 生日祝福小程序_广告配音剪映零基础入门教程第二十六篇:如何给朋友制作生日祝福视频...
经常听到小伙伴问到生日祝福视频怎么做,当然我想既然要为他人做生日祝福视频,那么这个人必定是自己身边比较重要的人,而生日又是每个人都是非常重要的,在这种充满意义的时刻,我们想给自己极其重要的人送上一份祝 ...
- SQL零基础入门学习(十六)
SQL零基础入门学习(十五) SQL函数 SQL MAX() 函数 MAX() 函数返回指定列的最大值. SQL MAX() 语法 SELECT MAX(column_name) FROM table ...
- 0基础能学漫画么?漫画零基础入门教程!
漫画零基础入门教程!很多人都喜欢看动漫,同时也会幻想成为动漫里的主角,与此同时也会诞生学漫画的想法.不论是你真的想学习漫画,又或出于个人爱好,或职业需要,或为了具备一项自己喜欢的看家本领.我们都要先清 ...
- 新版思科CCNA认证1.0 零基础入门技术VTP协议解析-ielab网络实验室
新版思科CCNA认证1.0 零基础入门技术VTP协议解析-ielab网络实验室 VTP(VLAN Trunking Protocol):VLAN中继协议,是Cisco专用协议.也被称为虚拟局域网干道 ...
- 0基础学python难吗-零基础入门学习Python技术难不难?
原标题:零基础入门学习Python技术难不难? 近几年对python人才爆发式需求,导致很多人转行进入python开发行业,现如今Python这门语言的就业前景会非常好.相对于其他来说,它语法简单易读 ...
最新文章
- 双向口和准双向口操作的不同!
- bootstrap的php写在哪里,bootstrap用什么编辑器写
- 基于Spring Cloud实现微服务前后端系统
- 动态栈Stack的C语言实现
- 同事用void把我给秀翻了!
- 如何将Elasticsearch的快照备份至OSS
- 游戏“外挂”?—— AI生成游戏最强攻略
- JAVA之NIO按行读写大文件,完美解决中文乱码问题
- 12.1 动态内存与智能指针(2)
- 挖金矿问题java课程设计_某15万吨金矿采矿方法课程设计
- Linux下安装flash player插件
- dev、test、prod、pre是什么意思?
- delphi低级键盘钩子(delphi2009测试通过)
- 仓库温度湿度控制措施_一般仓库的温湿度控制范围是多少合适?
- 报表开发工具 Stimulsoft Reports V2022.3.5系列发布!
- [三分]求凹凸函数最值
- VRRP协议个人理解(RFC5798)+典型配置+RFC2338/RFC3768文档翻译
- 《计算之魂》第1章 毫厘千里之差——大O概念(1.4节)
- 前端脚手架是指什么?
- 使用freemarker导出word并动态插入多张图片
热门文章
- 计算机图形学全代码,计算机图形学作业参考代码
- HDFS API操作的访问方式及JUnit测试类的使用
- 软件开发python方向_2020年软件开发7大学习方向!
- (day 35 - 自定义排序规则 )剑指 Offer 45. 把数组排成最小的数
- php java node 并发,Node、PHP、Java 和 Go 服务端 I/O 性能PK
- java tmp 目录_Tmp目录丢失引发Java进程异常
- Java的继承和python的继承_Java ,python面向对象的继承及其区别
- oracle 如何使用循环语句,Oracle条件语句跟循环语句
- vue-happy-scroll:vue中借助vue happy scroll实现局部文字滚动
- 开源的49款Java 网络爬虫软件