【511】Keras 函数式 API
- 单一输入输出:model = Model(inputs=inputs, outputs=output)
- 多输入多输出:model = Model(inputs=[a1, a2], outputs=[b1, b3, b3])
- 总结:单一的话直接写,多的话就写成列表形式
- keras.layers.Add():计算输入张量列表的和。
- keras.layers.Subtract():计算两个输入张量的差。
- keras.layers.Multiply():计算输入张量列表的(逐元素间的)乘积。
- keras.layers.Average():计算输入张量列表的平均值。
- keras.layers.Maximum():计算输入张量列表的(逐元素间的)最大值。
- keras.layers.Concatenate(axis=-1):连接一个输入张量的列表。
- keras.layers.Dot(axes, normalize=False):计算两个张量之间样本的点积。
1.1 函数式 API 简介
使用函数式 API,可以直接操作张量,也可以把层当作函数来使用,接收张量并返回张量。
将 Sequential 模型转换为对应的 函数式 API
Sequential 模型
1 2 3 4 | 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' )) |
对比上面的两种实现,深蓝色的部分基本是一样的,只是需要后面添加关联的信息即可。
1.2 多输入模型
典型的问答模型有两个输入:一个自然语言描述的问题和一个文本片段(比如新闻文章),后者提供用于回答问题的信息。然后模型要生成一个回答,在最简单的情况下,这个回答只包含一个词,可以通过对摸个预定义的词表做softmax得到。
输入:问题 + 文本片段
输出:回答(一个词)
思考说明,相当于两个线性模型在合并,中间用 layers.concatenate() 连接
标准写法如下:
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 | from keras.models import Model from keras import layers from keras import Input text_vocabulary_size = 10000 question_vocabulary_size = 10000 answer_vocabulary_size = 500 text_input = Input (shape = ( None ,), dtype = 'int32' , name = 'text' ) embeded_text = layers.Embedding(text_vocabulary_size, 64 )(text_input) encoded_text = layers.LSTM( 32 )(embeded_text) question_input = Input (shape = ( None ,), dtype = 'int32' , name = 'question' ) embeded_question = layers.Embedding(question_vocabulary_size, 32 )(question_input) encoded_question = layers.LSTM( 16 )(embeded_question) concatenated = layers.concatenate([encoded_text,encoded_question],axis = - 1 ) answer = layers.Dense(answer_vocabulary_size,activation = 'softmax' )(concatenated) model = Model([text_input,question_input],answer) model. compile (optimizer = 'rmsprop' , loss = 'categorical_crossentropy' , metrics = [ 'acc' ]) model.summary() |
分类:
AI Related / NLP
, AI Related
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)