一、import
引入需要使用的包
二、train,test
输入训练集和测试集
三、model = tf.keras.model.Sequential([网络结构]) #描述各层网络
eg. 拉直层:tf.keras.layers.Flatten() #将输入特征拉直变成一维数组
全连接层:tf.keras.layers.Dense(神经源个数,activation=“激活函数”,kernel_regularizer=哪种正则化) ,
activation(字符串给出)可选:relu、softmax、sigmoid、tanh
kernel_regulartzer可选:tf.keras.regularizers.l1()、tf.keras.regularizers.l2()
卷积层:tf.keras.layers.Conv2D(filters = 卷积核个数,kernel_size = 卷积核尺寸,strides = 卷积步长,padding = “valid” or “same”)
LSTM层:tf.keras.layers.LSTM()
rnn、gru、lstm介绍:https://zhuanlan.zhihu.com/p/135320350https://zhuanlan.zhihu.com/p/135320350
rnn、gru、lstm梯度消失和梯度爆炸介绍:https://zhuanlan.zhihu.com/p/60915302https://zhuanlan.zhihu.com/p/60915302
四、model.compile(optimizer = 优化器,loss = 损失函数,metrics = [“准确率”])
Optimizer可选:
'sgd' or tf.keras.optimizers.SGD(lr = 学习率,momentum = 动量参数)
'adagrad' or tf.keras.optimizers.Adagrad(lr = 学习率)
'adadelta' or tf.keras.optimizers.Adadelta(lr = 学习率)
'adam' or tf.keras.optimizers.Adam(lr = 学习率,beta_1 = 0.9,beta_2 = 0.999)
优化器介绍:https://zhuanlan.zhihu.com/p/261695487https://zhuanlan.zhihu.com/p/261695487
loss可选:
'mse' or tf.keras.losses.MeanSquaredError()
'sparse_categorical_crosssentropy' or tf.keras.losses.SparseCategoricalCrossentropy(from_logits = False)
#如果神经网络预测前经过概率分布from_logits为false,如果是直接输出则为true。假如十分类,正确率是十分之一,网络结构没有问题的前提下很可能是此参数出错
loss介绍:https://zhuanlan.zhihu.com/p/97698386https://zhuanlan.zhihu.com/p/97698386
Metrics可选:
'accuray':y_和y都是数值,如y_ = [1] y = [1]
'categorical_accuracy':y_和y都是独热码(或概率分布),如y_ = [0,1,0] y = [0.256,0.695,0.048]
# 独热编码(One-Hot Encoding),又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。. 即,只有一位是1,其余都是零值。. 例如,对六个状态进行编码:. 自然顺序码为 000,001,010,011,100,101. 独热编码则是 000001,000010,000100,001000,010000,100000.
'sparse_categorical_accuracy':y_是数值,y是独热码(或概率分布),如y_ = [1] y=[0.256,0.695,0.048]
#此处y_ = [1]中1为标签,y=[0.256,0.695,0.048]为概率分布
五、model.fit
(训练集的输入特征,训练集的标签,
batch_size = , epochs = ,
validation_data = (测试机的输入特征,测试集的标签),
validation_split = 从训练集划分多少比例给测试集,
validation_freq = 多少次epoch测试一次)
fit( x=None, #输入的x值
y=None, #输入的y标签值
batch_size=None, #整数 ,每次梯度更新的样本数即批量大小。未指定,默认为32。
epochs=1, #迭代次数
verbose=1, #整数,代表以什么形式来展示日志状态
callbacks=None, #回调函数,这个list中的回调函数将会在训练过程中的适当时机被调用,参考回调函数
validation_split=0.0, #浮点数0-1之间,用作验证集的训练数据的比例。模型将分出一部分不会被训练的验证数据,并将在每一轮结束时评估这些验证数据的误差和任何其他模型指标。
validation_data=None, #这个参数会覆盖 validation_split,即两个函数只能存在一个,它的输入为元组 (x_val,y_val),这作为验证数据。
shuffle=True, #布尔值。是否在每轮迭代之前混洗数据
class_weight=None,
sample_weight=None,
initial_epoch=0,
steps_per_epoch=None, #一个epoch包含的步数(每一步是一个batch的数据送入),当使用如TensorFlow数据Tensor之类的输入张量进行训练时,默认的None代表自动分割,即数据集样本数/batch样本数。
validation_steps=None, #在验证集上的step总数,仅当steps_per_epoch被指定时有用。
validation_freq=1, #指使用验证集实施验证的频率。当等于1时代表每个epoch结束都验证一次
max_queue_size=10,
workers=1,
use_multiprocessing=False
原文链接:https://blog.csdn.net/wuruivv/article/details/109372708