赞
踩
深入学习Keras中Sequential模型及方法 - 战争热诚 - bky https://www.cnblogs.com/wj-1314/p/9579490.html
序贯模型是函数式模型的简略版,为最简单的线性、从头到尾的结构顺序,不分叉,是多个网络层的线性堆叠。
Keras实现了很多层,包括core核心层,Convolution卷积层、Pooling池化层等非常丰富有趣的网络结构。
我们可以通过将层的列表传递给Sequential的构造函数,来创建一个Sequential模型。
from keras.models import Sequential
from keras.layers import Dense, Activation
model = Sequential([
Dense(32, input_shape=(784,)),
Activation('relu'),
Dense(10),
Activation('softmax'),
])
也可以使用.add()方法将各层添加到模型中:
model = Sequential()
model.add(Dense(32, input_dim=784))
model.add(Activation('relu'))
模型需要知道它所期待的输入的尺寸(shape)。出于这个原因,序贯模型中的第一层(只有第一层,因为下面的层可以自动的推断尺寸)需要接收关于其输入尺寸的信息,后面的各个层则可以自动的推导出中间数据的shape,因此不需要为每个层都指定这个参数。有以下几种方法来做到这一点:
input_shape参数给第一层。它是一个表示尺寸的元组(一个整数或None的元组,其中None表示可能为任何正整数)。在input_shape中不包含数据的batch大小。input_dim 指定输入尺寸,某些 3D 时序层支持 input_dim 和batch 大小(这对 stateful RNNs 很有用),你可以传递一个 batch_sizebatch_size=32 和 input_shape=(6, 8)因此下面的代码是等价的。
model = Sequential()
model.add(Dense(32, input_shape=(784,)))
model = Sequential()
model.add(Dense(32, input_dim=784))
下面三种方法也是严格等价的
model = Sequential()
model.add(LSTM(32, input_shape=(10, 64)))
model = Sequential()
model.add(LSTM(32, batch_input_shape=(None, 10, 64)))
model = Sequential()
model.add(LSTM(32, input_length=10, input_dim=64))
在训练模型之前,我们需要配置学习过程,这是通过compile方法完成的,他接收三个参数:
# 多分类问题 model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy']) # 二分类问题 model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['accuracy']) # 均方误差回归问题 model.compile(optimizer='rmsprop', loss='mse') # 自定义评估标准函数 import keras.backend as K def mean_pred(y_true, y_pred): return K.mean(y_pred) model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['accuracy', mean_pred])
方法compile见此篇文章:
【tensorflow】Sequential 模型方法 compile, model.compile_电子生医小白的博客-CSDN博客 https://blog.csdn.net/m0_53732376/article/details/117042962
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。