zoukankan      html  css  js  c++  java
  • 【511】Keras 函数式 API

    参考:开始使用 Keras 函数式 API

    参考:Model 类(函数式 API)说明

    • 单一输入输出:model = Model(inputs=inputs, outputs=output)
    • 多输入多输出:model = Model(inputs=[a1, a2], outputs=[b1, b3, b3])
    • 总结:单一的话直接写,多的话就写成列表形式

    参考:Layers » 融合层 Merge

    • 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 模型

    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() 连接

      标准写法如下: 

    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()
    

      

  • 相关阅读:
    Go标准库之tar
    redis必知必会
    GORM CRUD指南
    GORM入门指南
    MUI中tap点击事件点击一次连续申请两次
    Go代码启动默认浏览器
    Go实现JWT
    Go Micro
    protobuf初识
    英语作文
  • 原文地址:https://www.cnblogs.com/alex-bn-lee/p/14211423.html
Copyright © 2011-2022 走看看