gpt4 book ai didi

Keras中的两种模型:Sequential和Model用法

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Keras中的两种模型:Sequential和Model用法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

在Keras中有两种深度学习的模型:序列模型(Sequential)和通用模型(Model)。差异在于不同的拓扑结构.

序列模型 Sequential 。

序列模型各层之间是依次顺序的线性关系,模型结构通过一个列表来制定.

?
1
2
3
4
5
6
7
8
9
from keras.models import Sequential
from keras.layers import Dense, Activation
 
layers = [Dense( 32 , input_shape = ( 784 ,)),
    Activation( 'relu' ),
    Dense( 10 ),
    Activation( 'softmax' )]
 
model = Sequential(layers)

或者逐层添加网络结构 。

?
1
2
3
4
5
6
7
8
from keras.models import Sequential
from keras.layers import Dense, Activation
 
model = Sequential()
model.add(Dense( 32 , input_shape = ( 784 ,)))
model.add(Activation( 'relu' ))
model.add(Dense( 10 ))
model.add(Activation( 'softmax' ))

通用模型Model 。

通用模型可以设计非常复杂、任意拓扑结构的神经网络,例如有向无环网络、共享层网络等。相比于序列模型只能依次线性逐层添加,通用模型能够比较灵活地构造网络结构,设定各层级的关系.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from keras.layers import Input , Dense
from keras.models import Model
 
# 定义输入层,确定输入维度
input = input (shape = ( 784 , ))
# 2个隐含层,每个都有64个神经元,使用relu激活函数,且由上一层作为参数
x = Dense( 64 , activation = 'relu' )( input )
x = Dense( 64 , activation = 'relu' )(x)
# 输出层
y = Dense( 10 , activation = 'softmax' )(x)
# 定义模型,指定输入输出
model = Model( input = input , output = y)
# 编译模型,指定优化器,损失函数,度量
model. compile (optimizer = 'rmsprop' , loss = 'categorical_crossentropy' , metrics = [ 'accuracy' ])
# 模型拟合,即训练
model.fit(data, labels)

补充知识:keras神经网络,Sequential序贯模型(二分类、多分类) 。

1 Sequential参数 。

model = Sequential() model.add(Dense(32, input_dim=78)) 。

解释:

Sequential 的第一个关于输入数据shape的参数,后边的各个层则可以自动推到出中间数据的shape 。

01 传递一个input_shape的关键字参数给第一层,如果填入None则表示此位置可能是任何正整数。数据的batch大小不应包含在其中.

02 有些2D层,如Dense,支持通过指定其输入维度input_dim来隐含的指定输入数据shape,是一个Int类型的数据。一些3D的时域层支持通过参数input_dim和input_length来指定输入shape.

03 如果你需要为输入指定一个固定大小的batch_size(常用于stateful RNN网络),可以传递batch_size参数到一个层中,例如你想指定输入张量的batch大小是32,数据shape是(6,8),则你需要传递batch_size=32和input_shape=(6,8).

2、compile配置学习过程 。

model.compile(optimizer='rmspropy',loss='categorical_crossentropy',metrics=['accuracy']) 。

01 优化器optimizer:

该参数可指定为已预定义的优化器名,如rmsprop、adagrad,或一个Optimizer类的对象.

02 损失函数loss:

该参数为模型试图最小化的目标函数,它可为预定义的损失函数名,如categorical_crossentropy、mse,也可以为一个损失函数.

03 指标列表metrics:

对分类问题,我们一般将该列表设置为metrics=['accuracy']。指标可以是一个预定义指标的名字,也可以是一个用户定制的函数.指标函数应该返回单个张量,或一个完成metric_name - > metric_value映射的字典. 。

3、案例 。

01 基于多层感知器Softmax多分类(图片) 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
from keras.models import Sequential
from keras.layers import Dense,Dropout,Activation
from keras.optimizers import SGD
import keras #abd
 
# Generate dummy data
import numpy as np
 
x_train = np.random.random(( 1000 , 20 ))
y_train = keras.utils.to_categorical(np.random.randint( 10 ,size = ( 1000 , 1 )),num_classes = 10 )
x_test = np.random.random(( 100 , 20 ))
y_test = keras.utils.to_categorical(np.random.randint( 10 ,size = ( 100 , 1 )),num_classes = 10 )
 
model = Sequential()
 
# Dense(64) is a fully-connected Layer with 64 hidden units.
# in the first layer ,you must specify the expected input data shape;
# here,20-dimensional vectors.
 
model.add(Dense( 64 ,activation = 'relu' ,input_dim = 20 ))
model.add(Dropout( 0.5 ))
model.add(Dense( 64 ,activation = 'relu' ))
model.add(Dropout( 0.5 ))
model.add(Dense( 10 ,activation = 'softmax' ))
 
sgd = SGD(lr = 0.01 ,decay = 1e - 6 ,momentum = 0.9 ,nesterov = True )
 
model. compile (loss = 'categorical_crossentropy' , # 损失函数
     optimizer = sgd, #
     metrics = [ 'accuracy' ] # 精确度,评估模型在训练和测试时的网络性能的指标。
     )
 
model.fit(x_train,y_train,epochs = 20 ,batch_size = 128 )
 
# batch_size 整数,指定进行梯度下降时每个批次包含的样本数训练时一个批次的样本
# 会被计算一次梯度下降,使目标函数进行一步优化
# epochs;训练20次,整数,训练终止时候的epoch值
score = model.evaluate(x_test,y_test,batch_size = 128 )
 
# 评估函数 ,本函数返回一个测试误差的标量值(如果模型没有其他评价指标)。

02 MLP的二分类 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import numpy as np
from keras.models import Sequential
from keras.layers import Dense,Dropout
 
x_train = np.random.random(( 1000 , 20 ))
y_train = keras.utils.to_categorical(np.random.randint( 10 ,size = ( 1000 , 1 )),num_classes = 10 )
x_test = np.random.random(( 100 , 20 ))
y_test = keras.utils.to_categorical(np.random.randint( 10 ,size = ( 100 , 1 )),num_classes = 10 )
 
model = Sequential()
model.add(Dense( 64 ,input_dim = 20 ,activation = 'relu' ))
model.add(Dropout( 0.5 ))
model.add(Dense( 64 ,activation = 'relu' ))
model.add(Dropout( 0.5 ))
model.add(Dense( 1 ,activation = 'sigmoid' ))
 
model. compile (loss = 'binary_crossentropy' ,
     optimizer = 'rmsprop' ,
     metrics = [ 'accuracy' ])
 
model.fit(x_train,y_train,
    epoches = 20 ,
    batch_size = 128 )
 
score = model.evaluate(x_test,y_test,batch_size = 128 )

相关详细说明见官方文档:https://keras-cn.readthedocs.io/en/latest/getting_started/sequential_model/ 。

以上这篇Keras中的两种模型:Sequential和Model用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我.

原文链接:https://blog.csdn.net/weixin_39916966/article/details/88049179 。

最后此篇关于Keras中的两种模型:Sequential和Model用法的文章就讲到这里了,如果你想了解更多关于Keras中的两种模型:Sequential和Model用法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com