import matplotlib as mpl  # Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用import matplotlib.pyplot as plt  # Python数据可视化matplotlib.pyplot# %matplotlib inline #在使用jupyter notebook 或者 jupyter qtconsole的时候,经常会用到%matplotlib inline。其作用就是在你调用plot()进行画图或者直接输入Figure的实例对象的时候,会自动的显示并把figure嵌入到console中。import numpy as np  # 数值计算扩展。这种工具可用来存储和处理大型矩阵import sklearn  # 机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,包括回归(Regression)、降维(Dimensionality Reduction)、分类(Classfication)、聚类(Clustering)等方法。import pandas as pd  # 是python的一个数据分析包
import os  # 系统编程的操作模块,可以处理文件和目录
import sys  # sys模块包含了与Python解释器和它的环境有关的函数
import time
import tensorflow as tffrom tensorflow import keras
##################################################################################################
# 选择GPU
os.environ["CUDA_VISIBLE_DEVICES"] = "0"##################################################################################################print(tf.__version__)
print(sys.version_info)
for module in mpl, np, pd, sklearn, tf, keras:print(module.__name__, module.__version__)##################################################################################################fashion_mnist = keras.datasets.fashion_mnist  # 从keras中导入数据集datasets(x_train_all, y_train_all), (x_test, y_test) = fashion_mnist.load_data(  )# load_data导入训练集和测试集,x是图片,y是labelx_valid, x_train = x_train_all[:5000], x_train_all[5000:  ]  # 导入数据集中前x_valid5000个和x_train 为5000之后的
y_valid, y_train = y_train_all[:5000], y_train_all[5000:  ]  # 导入数据集中前y_valid5000个和y_train 为5000之后的print(x_valid.shape, y_valid.shape  )  # 前5000个训练集
print(x_train.shape, y_train.shape  )  # 训练集
print(x_test.shape, y_test.shape  )  # 测试集##################################################################################################
# x = (x - u) / std u是均值,std是方差
# 符合均值是0,方差是1的正态分布from sklearn.preprocessing import StandardScalerscaler = StandardScaler()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)# 归一化之前的accurary0.1多,归一化之后的accurary0.9多##################################################################################################model = keras.models.Sequential()
#添加两个卷积层一个pooling层
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))#添加两个卷积层一个pooling层
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))#添加两个卷积层一个pooling层
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))#添加全连接层
#先flatten
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(128,activation='selu'))
model.add(keras.layers.Dense(10, activation="softmax"))#filters 有多个少个卷积核(输出的通道)
#kernal_size 卷积核的 大小
#padding 边缘补零,same表示输入经过卷积之后输出和输入的大小一样################################################################################################### 配置训练模型
model.compile(loss="sparse_categorical_crossentropy",  # 损失函数optimizer = "sgd",  # 优化器名metrics = ["accuracy"])
# reason for sparse: y->index. y->one_hot->[]
# 原因:y是长度等于样本数目的向量,对于每个样本来说都是一个值,sparse使用y变成一个向量
##################################################################################################
print(model.layers)
"""output:[<tensorflow.python.keras.layers.convolutional.Conv2D object at 0x0000016444D33688>, <tensorflow.python.keras.layers.convolutional.Conv2D object at 0x00000164451EA688>, <tensorflow.python.keras.layers.pooling.MaxPooling2D object at 0x00000164450B76C8>, <tensorflow.python.keras.layers.convolutional.Conv2D object at 0x00000164451C4EC8>, <tensorflow.python.keras.layers.convolutional.Conv2D object at 0x000001644537C508>, <tensorflow.python.keras.layers.pooling.MaxPooling2D object at 0x000001644537C148>, <tensorflow.python.keras.layers.convolutional.Conv2D object at 0x000001644539F408>, <tensorflow.python.keras.layers.convolutional.Conv2D object at 0x0000016445393E88>, <tensorflow.python.keras.layers.pooling.MaxPooling2D object at 0x000001644539FCC8>, <tensorflow.python.keras.layers.core.Flatten object at 0x00000164453BC748>, <tensorflow.python.keras.layers.core.Dense object at 0x000001644539F508>, <tensorflow.python.keras.layers.core.Dense object at 0x00000164453C6948>]"""print(model.summary())
"""output:Model: "sequential"_________________________________________________________________Layer (type)                 Output Shape              Param #   =================================================================conv2d (Conv2D)              (None, 28, 28, 32)        320       _________________________________________________________________conv2d_1 (Conv2D)            (None, 28, 28, 32)        9248      _________________________________________________________________max_pooling2d (MaxPooling2D) (None, 14, 14, 32)        0         _________________________________________________________________conv2d_2 (Conv2D)            (None, 14, 14, 64)        18496     _________________________________________________________________conv2d_3 (Conv2D)            (None, 14, 14, 64)        36928     _________________________________________________________________max_pooling2d_1 (MaxPooling2 (None, 7, 7, 64)          0         _________________________________________________________________conv2d_4 (Conv2D)            (None, 7, 7, 128)         73856     _________________________________________________________________conv2d_5 (Conv2D)            (None, 7, 7, 128)         147584    _________________________________________________________________max_pooling2d_2 (MaxPooling2 (None, 3, 3, 128)         0         _________________________________________________________________flatten (Flatten)            (None, 1152)              0         _________________________________________________________________dense (Dense)                (None, 128)               147584    _________________________________________________________________dense_1 (Dense)              (None, 10)                1290      =================================================================Total params: 435,306Trainable params: 435,306Non-trainable params: 0_________________________________________________________________NoneProcess finished with exit code 0"""##################################################################################################
# 回调函数 Tensorboard, earlystopping, ModelCheckpoint
# logdir = './keras实战/callbacks'#这样运行会报错,可能是在windows下路径导致的问题
logdir = "cnn-selu-callbacks"
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)  ,  # 保存在logdir中keras.callbacks.ModelCheckpoint(output_model_file,  # 模型名称save_best_only = True),  # 保存一个最好的模型keras.callbacks.EarlyStopping(patience=5, min_delta=1e-3)  ,  # 如果连续5次迭代,loss值达到最小误差1e-3,便停止训练
]##################################################################################################
# 开始训练
history = model.fit(x_train_scaled, y_train, epochs=10,validation_data=(x_valid_scaled, y_valid),callbacks = callbacks)##################################################################################################
# 绘制结果图
def plot_learning_curves(history):pd.DataFrame(history.history).plot(figsize=(8 ,5))plt.grid(True)plt.gca().set_ylim(0 ,3)plt.show()plot_learning_curves(history)
# selu也可以缓解梯度消失
# 标准化的好处可以使椭圆分布的数据(梯度下降时难以拟合出最佳路线)呈现圆的分布################################################################################################### 用训练好的model进行评估
model.evaluate(x_test_scaled ,y_test)
"""output:2s 169us/sample - loss: 0.2195 - accuracy: 0.9147
"""

卷积神经网络_2.基本cnn网络实现(使用selu激活函数)相关推荐

  1. 【数据挖掘】卷积神经网络 ( 视觉原理 | CNN 模仿视觉 | 卷积神经网络简介 | 卷积神经网络组成 | 整体工作流程 | 卷积计算图示 | 卷积计算简介 | 卷积计算示例 | 卷积计算参数 )

    文章目录 I . 人类的视觉原理 II . 卷积神经网络 模仿 视觉原理 III . 卷积神经网络简介 IV . 卷积神经网络 组成 V . 卷积神经网络 工作流程 VI . 降低样本参数数量级 VI ...

  2. 深度卷积神经网络学习(CNN)

    什么是卷积神经网络 CNN:神经网络在前面的学习中我们已经了解过很多了,其本质就是多层感知机,卷积神经网络其实也一样,但是我们可以将其看成多层感知机的变种.它成功的原因在于其所采用的局部连接和权值共享 ...

  3. cnn卷积神经网络反向传播,cnn正向传播和反向传播

    如何对CNN网络的卷积层进行反向传播 在多分类中,CNN的输出层一般都是Softmax.RBF在我的接触中如果没有特殊情况的话应该是"径向基函数"(RadialBasisFunct ...

  4. 卷积神经网络人脸特征提取,cnn卷积神经网络模型

    1.卷积神经网络 有哪些改进的地方 卷积神经网络的研究的最新进展引发了人们完善立体匹配重建热情.从概念看,基于学习算法能够捕获全局的语义信息,比如基于高光和反射的先验条件,便于得到更加稳健的匹配.目前 ...

  5. Python实现贝叶斯优化器(Bayes_opt)优化卷积神经网络回归模型(CNN回归算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 贝叶斯优化器 (BayesianOptimization) 是一 ...

  6. 图卷积神经网络代码讲解,cnn卷积神经网络伪代码

    1.卷积神经网络通俗理解 卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Ne ...

  7. Python实现GWO智能灰狼优化算法优化卷积神经网络分类模型(CNN分类算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 灰狼优化算法(GWO),由澳大利亚格里菲斯大学学者 Mirjal ...

  8. 2020-8-25 吴恩达DL学习-C4 卷积神经网络-第二周 CNN实例探究(2.7Inception 网络)

    1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c 2.详细笔记网站(中文):http://www.ai-sta ...

  9. 机器学习-卷积神经网络之深度残差网络(三)

    背景介绍:MNIST数据集识别黑白的手写数字图片,不适合彩色模型的RGB三通道图片.用深度残差网络学习多通道图片. 简单介绍一下深度残差网络:普通的深度网络随着网络深度的加深,拟合效果可能会越来越好, ...

最新文章

  1. 【贪心】【codevs】1214 线段覆盖
  2. Cocoa如何应用设计模式
  3. python安装路径怎么找-Python---查看安装路径
  4. python哪里下载import包-详解python中的模块及包导入
  5. Jemeter组件介绍(四)
  6. 广东移动节能绿色数据中心掀起“能耗革命”
  7. RuntimeError: dictionary changed size during iteration
  8. Java反射原理学习之MethodHandle debug
  9. python怎么设置界面的背景音乐_PyQt5图形界面播放音乐的实例
  10. win10电脑安装android,5步教你如何在Win10 PC上安装Android 10
  11. html5 自适应手机布局,科技常识:html5移动端自适应布局的实现
  12. [超简单]C++如何使用MySQL数据库
  13. 后台产品的基石:权限管理体系设计
  14. BZOJ_1629_[Usaco2007_Demo]_Cow_Acrobats_(贪心)
  15. Python生信练习
  16. timezone_name_from_abbr() 函数
  17. 期股和原始股的区别?
  18. win10 安装kali子系统
  19. 现在哪个安卓模拟器比较好用--BlueStacks 5
  20. Mac 如何升级 Ruby 版本

热门文章

  1. 016-OpenCV 图像对比度亮度调整
  2. 动物模型之肾衰竭模型 大鼠实验性ARF的最常用大鼠模型
  3. hive与传统型数据的区别
  4. catia安装许可证
  5. 计算机专业专科毕业设计题目,计算机专业毕业设计题目
  6. 深度 linux 还在更新吗,国产深度操作系统更新了!亲身使用感受:deepin系统更加美观高效...
  7. 计世传媒集团中国CIO高峰论坛:“智变·创变”中的未来,CIO不只是CIO
  8. Ipad平替电容笔哪个品牌口碑好?apple pencil平替笔排名
  9. 《设计模式之禅》-桥梁模式
  10. 计算不同色域下的RGB与YUV 以及 RGB与XYZ互转公式