本节提示:
1、DL的核心构建
2、Keras的简单介绍
3、搭建DL机器训练环境
4、使用DL模型解决基础问题
3.1 DL的基本构建:layer
layer的定义:以1个或多个tensor作为输入,并且运算出来1个或者多个tensor作为输出的数据处理模型。
from keras import models
from keras import layters

model = models.Sequentail()
model.add(layers.Dense(32,input_shape=(784,)))
model.add(layers.Dense(32))

在这样的代码中,第二层的layer自动以前一层的结果大小为输入大小。
3.2 DL的基本构建:model
model的定义:一个DL的model是一个直接的、非循环的layer的图,是最直接的layers的线性表示方式,单输入并且但输出。
model包含squence和model两种模式,这在之前已经讨论过。
3.3 DL的基本构建:loss function和optimizers
loss function:它表示的是当前训练项目的成功率;
optimizers:    表示,基于当前的loss function,当前的网络采取什么样的方法优化。主要是体现在SGD的具体变化上。
对于不同类型的训练,往往都有默认的很好的optimizers选择,只有当你进行专门的训练的时候,才可能需要采用自己定义的方法。
3.4 DL训练的步骤
3.4.1 定义你的数据集
3.4.2 选择一种layers的组合方式(选择model)
3.4.3 config选择的的model
3.4.4 训练,并且得到结果
在定义的过程中,有一些思考:
a、为什么要使用激活层
否则,原系统就是原始的线性系统,缺乏灵活性。
b、关于损失函数的选择
如果你使用的是binary函数,则
loss='binary_crossentropy'
当你想使用自定义的时候,尝试这个
model.compile(optimizer=optimizers.RMSprop(lr=0.001),
loss='binary_crossentropy',
metrics=['accuracy'])
实际上,很多时候,RMSprop都是一个不错的选择。
3.5 fit()返回的是log,它是一个hash,类似这种结构
['acc','loss','val_acc','val_loss']
3.6 predict
model.predict(x_test)
是对目前一个输入测试用例的实验。
3.7 关于compile中参数的选择,这块的概论非常重要又很模糊
一个典型的compile主要解决3个问题:
optimizer是什么,loss是什么,metrics是什么。而这3个参数的选择,往往都和问题本身有关:
optimizer:优化器,为预定义优化器名或优化器对象

常见的目标函数

rmsprop:绝大多数情况下都是可用的,该优化器通常是面对递归神经网络时的一个良好选择
sgd:(似乎也是可以的)随机梯度下降法,支持动量参数,支持学习衰减率,支持Nesterov动量
loss:( categorical:绝对的;cross entropy 交叉熵)
categorical_crossentropy 最好的选择,onehot
sparse_categorical_crossentropy 当你的标签是integer的时候,选择
binary_crossentropy 2类分类的时候,选择
mse mean squared error 当你的问题是回归问题的时候选择(regression)

而mae为 mean absolute error ,能够只管地显示出你在什么时候出现overfit

可用的目标函数

  • mean_squared_error或mse

  • mean_absolute_error或mae

  • mean_absolute_percentage_error或mape

  • mean_squared_logarithmic_error或msle

  • squared_hinge

  • hinge

  • categorical_hinge

  • binary_crossentropy(亦称作对数损失,logloss)

  • logcosh

  • categorical_crossentropy:亦称作多类的对数损失,注意使用该目标函数时,需要将标签转化为形如(nb_samples, nb_classes)的二值序列

  • sparse_categorical_crossentrop:如上,但接受稀疏标签。注意,使用该函数时仍然需要你的标签与输出值的维度相同,你可能需要在标签数据上增加一个维度:np.expand_dims(y,-1)

  • kullback_leibler_divergence:从预测值概率分布Q到真值概率分布P的信息增益,用以度量两个分布的差异.

  • poisson:即(predictions - targets * log(predictions))的均值

  • cosine_proximity:即预测值与真实标签的余弦距离平均值的相反

metrics(列表,包含评估模型在训练和测试时的性能的指标)
acc和accuracy,似乎是一个东西,或者metrics={'ouput_a': 'accuracy'}
3.8 平滑绘制最后的曲线
plt.plot(range(1,len(average_mae_history)+1),average_mae_history)到
 
def smooth_curve(points,factor=0.9)
    smoothed_points = []
       for point in points:
          if smoothed_points:
             previous = smoothed_points[-1]
             smoothed_points.append(previous*factor+point*(1-factor))
           else:
              smothed_points.append(point)
     return smoothed_points
应该是有方法的,但是也是要到了多个epoch的时候才会出现这个问题。
   
来自为知笔记(Wiz)

​DL_WITH_PY系统学习(第3章)相关推荐

  1. DL_WITH_PY系统学习(第2章)

    ​ 本节提示: 1.第一个dl例子: 2.tensor和tensor操作: 3.DL如何通过逆向传播和梯度下降达到学习目的. 2.1 输入数据集的格式 from keras.datasets impo ...

  2. Linux系统学习第四章:文件压缩、打包与备份(二)备份与还原

    一.备份:dump (1)dump -S  设备名 :显示需要备份的设备所在分区所需要的最小的容量 1 [root@localhost php]# dump -S /dev/sda2 2 471040 ...

  3. Java I/O系统学习系列二:输入和输出

    编程语言的I/O类库中常使用流这个抽象概念,它代表任何有能力产出数据的数据源对象或者是有能力接收数据的接收端对象."流"屏蔽了实际的I/O设备中处理数据的细节. 在这个系列的第一篇 ...

  4. 知乎高赞回答:是否有必要系统学习概率图模型?

    概率图模型(PGM)是用图来表示变量概率依赖关系的理论.自被图灵奖获得者Pearl提出以来,已成为不确定性推理近10年的研究热点,在统计机器学习.语音识别.计算机视觉和自然语言处理等领域有广阔的理论研 ...

  5. 《Go语言圣经》学习笔记 第一章 Go语言入门

    Go语言圣经学习笔记 第一章 Go语言入门 目录 Hello, World 命令行参数 查找重复的行 GIF动画 获取URL 并发获取多个URL Web服务 本章要点 注:学习<Go语言圣经&g ...

  6. 《SysML精粹》学习记录--第九章

    <SysML精粹>学习记录 第九章:参数图 参数图简介 参数图元素 小结 第九章:参数图 参数图简介   参数图是一种独特的SysML图,它用于说明系统的约束.这些约束一般以数学模型的方式 ...

  7. 《SysML精粹》学习记录--第二章

    <SysML精粹>学习记录 第二章:系统建模语言概览 SysML介绍 SysML与UML SysML图概览 SysML通用图 小结 第二章:系统建模语言概览 SysML介绍   SysML ...

  8. 乐行学院Redis5学习教程 第一章redis5的安装

    乐行学院Redis5学习教程 第一章redis5的安装 1.安装虚拟机 2.centeros下载 3.vmware安装centeros 4.vmware安装centeros设置IP 5.安装redis ...

  9. 《谁说菜鸟不会数据分析》学习笔记 第一章总览 第二章数据分析思路

    网上的信息太琐碎了,根本没搞懂什么是数据分析方法什么是数据分析方法论,所以找了一本比较简单的书来系统学习一下,本来打算粗略看完,但是觉得这本书知识还是不错的,所以决定在未来一周把这本书用心学一下. 这 ...

最新文章

  1. Winform控件:打开文件对话框(OpenFileDialog)
  2. dynamodb分页查询_使用DynamoDBMapper查询DynamoDB项目
  3. [TimLinux] JavaScript 元素动态显示
  4. [芯片] 2、接口技术·实验二·定时/计数器8253
  5. java mm_Java网络编程-你是GG还是MM?
  6. VS2011 and Visual Studio 2010 For Windows phone
  7. EasyUI DataGrid 可编辑列级联操作
  8. Echarts定制一个地图
  9. EH使用IPMI基础操作
  10. android详细信息java.util.ConcurrentModificationException变态
  11. java移库数据同步,洗车管理系统会员管理+门店店务同步管理
  12. 51单片机彩灯控制器c语言代码,【原创】第九届蓝桥杯单片机:彩灯控制器源程序和题目...
  13. linux SCALA 安装及环境配置
  14. 敏捷团队章程-让团队持续敏捷
  15. Fluent 旋转机械 风机 二维情况下的力矩计算算法
  16. 11n、11ac和11ax速率表
  17. git操作与vscode,码市的结合
  18. ES插件在谷歌浏览器的安装
  19. 检索 国家自然科学基金
  20. PHP之流程控制(四)

热门文章

  1. 从Netty到EPollSelectorImpl学习Java NIO
  2. ASP .NET 如何在 SQL 查询层面实现分页
  3. 【JOURNAL】《不思八九》 --和友腊八诗一首
  4. Mac下python3配置opencv3 3和Mac下单独opencv的配置以及iOS下配置opencv
  5. backup(full,diff,log)备份并清理过时备份
  6. Zencart获取PayPal PDT Token参数教程方法
  7. [Treap]JZOJ 4737 金色丝线将瞬间一分为二
  8. 《经济学人》也谈 Python:它会是我们的未来吗?
  9. python的print换行
  10. ReactNative项目打包(Android IOS)