zoukankan      html  css  js  c++  java
  • keras sequential创建网络模型和functional api创建网络模型的区别

    > //20201101

    > 写在前面:最近在过tensorflow和keras的基础,今天学到了keras两种创建网络模型的区别,在此记录一下

    ### 1.sequential序列创建网络模型

     - 使用sequential创建网络模型,只能顺序创建,也就是说,网络是线性传播的,不能有共享输入或者共享输出

     - 使用sequential创建网络模型有两种方法

      - 使用add()方法将所需的网络层一层一层累加进去

      - 直接在sequential方法中传入列表格式数据(其中包含所需要创建网络的架构)

    #### 源代码实例如下

    - 第一种方法

    from keras.models import Sequential
    from keras.layers import Dense
    
    # 構建模型
    model = Sequential()
    model.add(Dense(2, input_shape=(1,)))
    model.add(Dense(1))

    - 第二种方法

    model = Sequential([
       Dense(2,input_shape = (1,))
       Dense(1)    
    ])

    > ps:然后调用compile()编译网络,调用fit()训练网络

    ### 2.使用functional api创建网络

    - functional api创建网络时允许网络中有分支路线与汇合结点(使用concatenate方法)

    - 具体代码示例如下

    mnist_input = keras.layers.Input(shape=(28*28,1),name = 'input')
        lstm1 = keras.layers.LSTM(128,name = 'lstm1')(mnist_input)
    
        interp21 = keras.layers.Dense(64,activation='relu',name='interp21')(lstm1)
        interp22 = keras.layers.Dense(32,activation='relu',name='interp22')(interp21)
        interp23 = keras.layers.Dense(16,activation='relu',name='interp23')(interp22)
    
        interp11 = keras.layers.Dense(10,activation='relu',name='interp11')(lstm1)
    
        merge = keras.layers.concatenate([interp23,interp11],name='merge')
    
        output = keras.layers.Dense(10,activation='softmax',name='output')(merge)
    
        model = keras.models.Model(inputs=mnist_input,outputs=output)
    
        print(model.summary())
        return model

    - 网络拓扑图像为:

    #### 以上

    #### 希望对大家有所帮助

  • 相关阅读:
    Oracle客户端安装与配置
    Word VBA(批量复制Excel表格和Word表格到Word中)
    批量追加数据库(GDB,MDB,Shp)
    批量横向打印Excel
    重命名要素类
    删除GIS数据属性值空格(GDB,MDB,Shp)
    删除GIS数据库空层(GDB,MDB,Shape)
    批量裁剪GIS数据(包含GDB,MDB,Shp)
    批量裁剪GDB
    3DS文件导出MultiPatch
  • 原文地址:https://www.cnblogs.com/lavender-pansy/p/13910855.html
Copyright © 2011-2022 走看看