学习深度学习代码各个步骤都是为了啥

Posted 盖丽男

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习深度学习代码各个步骤都是为了啥相关的知识,希望对你有一定的参考价值。


活动地址:CSDN21天学习挑战赛

学习日记

构建模型

model = tf.keras.Sequential([
    SimpleRNN(100, return_sequences=True), #布尔值。是返回输出序列中的最后一个输出,还是全部序列。
    Dropout(0.1),                         #防止过拟合
    SimpleRNN(100),
    Dropout(0.1),
    Dense(1)
])

Sequential()方法是一个容器,描述了神经网络的网络结构,在Sequential()的输入参数中描述从输入层到输出层的网络结构

Keras中,有4种类型的RNN模型,分别是:

  • SimpleRNN (全连接的简单RNN)
  • LSTM(长短时记忆模型)
  • GRU (门控逻辑模型)
  • StackedRNNCells(堆叠模型)

Dropout正则化是最简单的神经网络正则化方法。其原理非常简单粗暴:任意丢弃神经网络层中的输入,该层可以是数据样本中的输入变量或来自先前层的激活。它能够模拟具有大量不同网络结构的神经网络,并且反过来使网络中的节点更具有鲁棒性。

Dense 就是常提到和用到的全连接层

激活模型

# 该应用只观测loss数值,不观测准确率,所以删去metrics选项,一会在每个epoch迭代显示时只显示loss值
model.compile(optimizer=tf.keras.optimizers.Adam(0.001),
              loss='mean_squared_error')  # 损失函数用均方误差

  • optimizer:优化器,用于控制梯度裁剪。必选项
  • loss:损失函数(或称目标函数、优化评分函数)。必选项
  • metrics:评价函数用于评估当前训练模型的性能。当模型编译后(compile),评价函数应该作为 metrics的参数来输入。评价函数和损失函数相似,只不过评价函数的结果不会用于训练过程中。

训练模型

history = model.fit(x_train, y_train, 
                    batch_size=64, 
                    epochs=20, 
                    validation_data=(x_test, y_test), 
                    validation_freq=1)                  #测试的epoch间隔数

model.summary()
  • batch_size 整数 每次梯度更新的样本数。 未指定,默认为32
  • epochs 整数 训练模型迭代次数
  • verbose 日志展示,整数 0:为不在标准输出流输出日志信息 1:显示进度条 2:每个epoch输出一行记录
  • validation_split

浮点数0-1之间
用作验证集的训练数据的比例。
模型将分出一部分不会被训练的验证数据,并将在每一轮结束时评估这些验证数据的误差和任何其他模型指标。
验 证 数 据 是 混 洗 之 前 x 和 y 数 据 的 最 后 一 部 分 样 本 中 。 \\colorred 验证数据是混洗之前 x 和y 数据的最后一部分样本中。验证数据是混洗之前x和y数据的最后一部分样本中。

  • validation_data

元组 (x_val,y_val) 或元组 (x_val,y_val,val_sample_weights), 用来评估损失,以及在每轮结束时的任何模型度量指标。
模型将不会在这个数据上进行训练。
这个参数会覆盖 validation_split。

  • validation_steps

仅当steps_per_epoch被指定时有用,在验证集上的step总数。

以上是关于学习深度学习代码各个步骤都是为了啥的主要内容,如果未能解决你的问题,请参考以下文章

学习深度学习代码各个步骤都是为了啥

学习深度学习代码各个步骤都是为了啥

学习深度学习代码各个步骤都是为了啥

学习深度学习代码各个步骤都是为了啥

Keras深度学习实战——使用长短时记忆网络构建情感分析模型

机器学习 vs 深度学习到底有啥区别,为什么更多人选择机器学习