​DL_WITH_PY系统学习(第3章)

简介: 本节提示:1、DL的核心构建2、Keras的简单介绍3、搭建DL机器训练环境4、使用DL模型解决基础问题3.1 DL的基本构建:layerlayer的定义:以1个或多个tensor作为输入,并且运算出来1个或者多个tensor作为输出的数据处理模型。
img_03e7b9cbd237c246dc041f4bb59a92dc.jpe
本节提示:
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的时候才会出现这个问题。
   





目前方向:图像拼接融合、图像识别 联系方式:jsxyhelu@foxmail.com
目录
相关文章
|
3月前
|
数据采集 机器学习/深度学习 数据格式
在使用 Core ML 时,有哪些注意事项?
在使用 Core ML 时,有哪些注意事项?
22 1
|
1天前
|
开发框架 .NET 数据库
EF学习和使用(一)(Model First为例)
EF学习和使用(一)(Model First为例)
6 0
|
3月前
|
索引
yolov5--detect.py --v5.0版本-最新代码详细解释-2021-6-29号更新
yolov5--detect.py --v5.0版本-最新代码详细解释-2021-6-29号更新
42 0
yolov5--detect.py --v5.0版本-最新代码详细解释-2021-6-29号更新
|
3月前
|
机器学习/深度学习 索引
yolov5--loss.py --v5.0版本-最新代码详细解释-2021-7-1更新
yolov5--loss.py --v5.0版本-最新代码详细解释-2021-7-1更新
84 0
|
6月前
|
前端开发 芯片 Python
【python脚本】ICer的脚本入门训练——gen_tc
【python脚本】ICer的脚本入门训练——gen_tc
|
8月前
|
机器学习/深度学习 JSON 数据格式
YOLOv5源码逐行超详细注释与解读(4)——验证部分val(test).py
YOLOv5源码逐行超详细注释与解读(4)——验证部分val(test).py
888 0
YOLOv5源码逐行超详细注释与解读(4)——验证部分val(test).py
|
9月前
|
Kubernetes 容灾 应用服务中间件
【k8s 系列】k8s 学习十一,Label,RC,HPA
上面简单说了一下 pod 的基本知识点,待到后面会使用到 pod 的一些高阶知识点的时候,还可以再细细琢磨底层原理
|
存储 搜索推荐 Java
preprocess_data.py代码解释
循环遍历每个用户,对于每个用户,提取其对电影的评分。 创建一个与所有电影数量相同的评分数组,将相应的评分放置在数组的正确位置。 如果该用户没有评分电影,则跳过该用户。 返回所有用户的评分数组列表。
168 0
|
Arthas 前端开发 测试技术
tt 命令的案例演示 | 学习笔记
快速学习 tt 命令的案例演示
120 0
tt 命令的案例演示 | 学习笔记
|
Python
【Python零基础入门篇 · 26】:魔法方法(__doc__、__str__、__module__、__class__的使用)
【Python零基础入门篇 · 26】:魔法方法(__doc__、__str__、__module__、__class__的使用)
【Python零基础入门篇 · 26】:魔法方法(__doc__、__str__、__module__、__class__的使用)