DL with python(5)——Keras中的神经网络函数(简单)

本文涉及到的是中国大学慕课《人工智能实践:Tensorflow笔记》第三讲的内容,对keras框架搭建神经网络的几个函数进行简单介绍。

搭建网络结构——tf.keras.models.Sequential()

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

拉直层: tf.keras.layers.Flatten()
拉直层可以变换张量的尺寸,把输入特征拉直为一维数组,是不含计算参数的层。
全连接层: tf.keras.layers.Dense( 神经元个数,
activation=”激活函数”,
kernel_regularizer=”正则化方式”)
其中:
activation(字符串给出)可选 relu、softmax、sigmoid、tanh 等,kernel_regularizer 可选 tf.keras.regularizers.l1()、tf.keras.regularizers.l2()
卷积层: tf.keras.layers.Conv2D( filter = 卷积核个数,kernel_size = 卷积核尺寸,strides = 卷积步长,padding = “valid” or “same”)
LSTM 层: tf.keras.layers.LSTM()
本章只使用拉直层和全连接层,卷积层和循环神经网络层将在之后的章节介绍。

代码示例:

model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(3, activation='softmax', kernel_regularizer=tf.keras.regularizers.l2())
]) # 依次为神经元个数,激活函数,正则化方法

配置训练方法——model.compile

compile 用于配置神经网络的训练方法,设置训练时使用的优化器、损失函数和准确率评测标准,一共三个参数,如下:

Model.compile( optimizer =  优化器, 
loss =  损失函数, 
metrics = ['准确率']) 

optimizer可以是字符串形式给出的优化器名字,也可以是函数形式 ,使用函数形式可以设置学习率、动量和超参数。可选项包括:

'sgd' or tf.optimizers.SGD( lr=学习率,decay=学习率衰减率,momentum=动量参数)
'adagrad' or tf.keras.optimizers.Adagrad(lr=学习率,decay=学习率衰减率)
'adadelta' or tf.keras.optimizers.Adadelta(lr=学习率,decay=学习率衰减率)
'adam' or tf.keras.optimizers.Adam (lr=学习率,decay=学习率衰减率)

loss 可以是字符串形式给出的损失函数的名字,也可以是函数形式。损失函数常需要经过 softmax 等函数将输出转化为概率分布的形式。from_logits 则用来标注该损失函数是否需要转换为概率的形式,取 False 时表示转化为概率分布,取 True 时表示没有转化为概率分布,直接输出。可选项包括:

'mse' or tf.keras.losses.MeanSquaredError()
'sparse_categorical_crossentropy' or tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False)

metrics 标注网络评测指标,通过对输出值和实际值的比较给出最终的准确率。可选项包括:

'accuracy':y_和 y 都是数值,如 y_=[1] y=[1]'categorical_accuracy':y_和 y 都是以独热码和概率分布表示。
如 y_=[0, 1, 0], y=[0.256, 0.695, 0.048]'sparse_ categorical_accuracy':y_是以数值形式给出,y 是以独热码形式给出。
如 y_=[1],y=[0.256, 0.695, 0.048]

执行训练——model.fit

执行训练,代码中的参数依次为训练集输入样本,训练集标签,小批量大小,训练轮次,测试集占比(这里是20%),测试的 epoch 间隔次数(这里指训练集循环20轮次进行一次测试)

model.fit(x_train, y_train, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)

你可能感兴趣的:(python学习)