概述
1.3 标准网路模型
在开始使用函数式API时,最好先了解一些标准神经网路模型的定义,本节我们将介绍如何定义一个简单的多层感知器、卷积神经网路和递归神经网路。这些示例将为后面更详细的示例提供基础。
1.3.1 多层感知器
在这里,我们将定义一个用于二分类的多层感知器模型,该模型有10个输入,3个隐藏层,分别有16,32和16个神经元,以及1个输出层,每个隐藏层中使用relu激活函数,输出层使用sigmoid激活函数,用于二分类。
from keras.utils import plot_model
from keras.models import Model
from keras.layers import Input,Dense
input_tensor = Input(shape=(10,))
x1 = Dense(16,activation='relu')(input_tensor)
x2 = Dense(32,activation='relu')(x1)
x3 = Dense(16,activation='relu')(x2)
output = Dense(1,activation='sigmoid')(x3)
model = Model(inputs = input_tensor,outputs = output)
plot_model(model,to_file='model_graph.png')
注意创建模型图需要安装pydot和pygraphviz。
1.3.2 卷积神经网络
在此我们定义用于图像分类的卷积神经网络,该网络接受黑白64×64图像作为输入,然后具有两个卷积和池化层的序列作为特征提取器,接着全连接层,并用sigmoid来激活
from keras.utils import plot_model
from keras.models import Model
from keras.layers import Input,Dense,Conv2D,MaxPooling2D
input_tensor = Input(shape=(64,64,1))
conv1 = Conv2D(32,kernel_size=4,activation='relu')(input_tensor)
pool1 = MaxPooling2D(pool_size=(2,2))(conv1)
conv2 = Conv2D(16,kernel_size=4,activation='relu')(pool1)
pool2 = MaxPooling2D(pool_size=(2,2))(conv2)
x = Dense(16,activation='relu')(pool2)
output = Dense(1,activation='sigmoid')(x)
model = Model(inputs=input_tensor,outputs = output)
model.summary()
plot_model(model,to_file='conv model.png')
model.summary():
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_1 (InputLayer) (None, 64, 64, 1) 0
_________________________________________________________________
conv2d_1 (Conv2D) (None, 61, 61, 32) 544
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 30, 30, 32) 0
_________________________________________________________________
conv2d_2 (Conv2D) (None, 27, 27, 16) 8208
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 13, 13, 16) 0
_________________________________________________________________
dense_1 (Dense) (None, 13, 13, 16) 272
_________________________________________________________________
dense_2 (Dense) (None, 13, 13, 1) 17
=================================================================
Total params: 9,041
Trainable params: 9,041
Non-trainable params: 0
_________________________________________________________________
使用函数式API定义的一个简单的CNN模型图
1.3.3 递归神经网络
在此我们定义一个用于序列分类的的长短期记忆递归神经网络,该模型需要100个时间步长作为输入,该模型具有单个LSTM隐藏层以从序列中提取特征,接着是全连接层来介绍LSTM的输出,接着用二元预测的输出层
from keras.utils import plot_model
from keras.models import Model
from keras.layers import Input,Dense,LSTM
input_tensor = Input(shape=(100,1))
lstm = LSTM(16)(input_tensor)
x = Dense(16,activation='relu')(lstm)
output = Dense(1,activation='sigmoid')(x)
model = Model(input_tensor,output)
model.summary()
plot_model(model,to_file='recurrent_neural_network.png')
model.summary():
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_1 (InputLayer) (None, 100, 1) 0
_________________________________________________________________
lstm_1 (LSTM) (None, 16) 1152
_________________________________________________________________
dense_1 (Dense) (None, 16) 272
_________________________________________________________________
dense_2 (Dense) (None, 1) 17
=================================================================
Total params: 1,441
Trainable params: 1,441
Non-trainable params: 0
_________________________________________________________________
最后
以上就是悲凉大象为你收集整理的keras自然语言处理(三)——标准网络模型的全部内容,希望文章能够帮你解决keras自然语言处理(三)——标准网络模型所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复