《python深度学习》学习笔记与代码实现(第七章:7.1:不用Sequential模型的解决方案)

python深度学习第七章----高级的深度学习最佳实践

7.1 不用Sequential模型的解决方案

Sequential模型的特点:

1.只有一种输入

例如,我们要同时处理文本数据(全连接层),图片数据(2D卷积层),就不能使用Sequential模型,我们就需要多模态输入,例如,我们的输入数据为元数据,文本描述,图片,来预测一个一个商品的价格,我们就可以将Dense模块,RNN模块,卷积神经网络模块结合起来

2.一种输出

例如,给定一部小说,我们将要他归类,还要预测其写作时间,这时就要两个输出,一个输出用来判别其类别,另一种输出来预测其写作时间

函数式API

from keras.models import Sequential,Model
from keras import layers
from keras import Input

# 之前学习过的Sequential模型
seq_model = Sequential()
seq_model.add(layers.Dense(32,activation = 'relu',input_shape = ((64,))))
seq_model.add(layers.Dense(32,activation = 'relu'))
seq_model.add(layers.Dense(10,activation = 'softmax'))
seq_model.summary()


# 对应的函数式API实现
input_tensor = Input(shape = (64,))
x = layers.Dense(32,activation = 'relu')(input_tensor)
x = layers.Dense(32,activation = 'relu')(x)
output_tensor = layers.Dense(10,activation = 'softmax')(x)

# 后台检索,从输入张量一直到输出张量,检索其每一层,检测输入张量,经过一系列变换,到达输出张量
model = Model(input_tensor,output_tensor)

model.summary()


_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_4 (Dense)              (None, 32)                2080      
_________________________________________________________________
dense_5 (Dense)              (None, 32)                1056      
_________________________________________________________________
dense_6 (Dense)              (None, 10)                330       
=================================================================
Total params: 3,466
Trainable params: 3,466
Non-trainable params: 0
_________________________________________________________________
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_1 (InputLayer)         (None, 64)                0         
_________________________________________________________________
dense_7 (Dense)              (None, 32)                2080      
_________________________________________________________________
dense_8 (Dense)              (None, 32)                1056      
_________________________________________________________________
dense_9 (Dense)              (None, 10)                330       
=================================================================
Total params: 3,466
Trainable params: 3,466
Non-trainable params: 0
_________________________________________________________________

多输入模型

举例:一个问答问题,输入为一个问题和所有问题的文本数据集合,输出为一个回答

from keras.models import Model
from keras import layers
from keras import Input
import keras

text_vocabulary_size = 10000
question_vocabulary_size = 10000
answer_vocabulary_size = 500

# 第一个输入
text_input = Input(shape = (None,),dtype = 'int32',name = 'text')  #文本输入是一个长度可变的整数序列
embedded_text = layers.Embedding(text_vocabulary_size,64)(text_input)
encode_text = layers.LSTM(32)(embedded_text)

# 第二个输入
question_input = Input(shape = (None,),dtype = 'int32',name 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值