学习深度学习代码各个步骤都是为了啥
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总数。
…
以上是关于学习深度学习代码各个步骤都是为了啥的主要内容,如果未能解决你的问题,请参考以下文章