繁体   English   中英

来自函数式 API 的 Keras 顺序模型

[英]Keras sequential model from functional API

我有一个使用函数式 API 的 Keras 模型,它看起来是:

nn = keras.layers.Conv1D(300,19,strides=1,activation='relu')(inputs) 
nn = keras.layers.Conv1D(300,19,strides=1,activation='relu')(nn) 

nn = keras.layers.MaxPool1D(pool_size=3)(nn)

nn = keras.layers.Flatten()(nn)
nn = keras.layers.Dense(596,activation='relu')(nn)

logits = keras.layers.Dense(35, activation='linear')(nn)
outputs = keras.layers.Activation('sigmoid')(logits)

我想将它转换为顺序模型,但是我很困惑逻辑输出层在顺序模型中的样子。 所以我到目前为止:

model.add(keras.layers.Conv1D(300,19,'relu',input_shape=dataset['x_train'].shape[1:])
model.add(keras.layers.Conv1D(300,19,'relu')
model.add(Flatten())
model.add(keras.layers.Dense(596,'relu'))

我对接下来的两层感到困惑。 有人可以指导我如何在顺序模型中为其编码。 帮助将不胜感激。

您可以使用tf.keras.Model并传递inputsoutputs并获取model.summary()并使用tf.keras.Sequential() () 创建一个精确模型,如下所示:(您可以看到Total params: 3,706,091两者楷模。)

使用函数式 API:

import tensorflow as tf
inputs = tf.keras.layers.Input((64, 64))
nn = tf.keras.layers.Conv1D(300,19,strides=1,activation='relu')(inputs) 
nn = tf.keras.layers.Conv1D(300,19,strides=1,activation='relu')(nn) 
nn = tf.keras.layers.MaxPool1D(pool_size=3)(nn)
nn = tf.keras.layers.Flatten()(nn)
nn = tf.keras.layers.Dense(596,activation='relu')(nn)
logits = tf.keras.layers.Dense(35, activation='linear')(nn)
outputs = tf.keras.layers.Activation('sigmoid')(logits)
model = tf.keras.Model(inputs, outputs)
model.summary()

输出:

Model: "model_1"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 input_2 (InputLayer)        [(None, 64, 64)]          0         
                                                                 
 conv1d_2 (Conv1D)           (None, 46, 300)           365100    
                                                                 
 conv1d_3 (Conv1D)           (None, 28, 300)           1710300   
                                                                 
 max_pooling1d_1 (MaxPooling  (None, 9, 300)           0         
 1D)                                                             
                                                                 
 flatten_1 (Flatten)         (None, 2700)              0         
                                                                 
 dense_2 (Dense)             (None, 596)               1609796   
                                                                 
 dense_3 (Dense)             (None, 35)                20895     
                                                                 
 activation_1 (Activation)   (None, 35)                0         
                                                                 
=================================================================
Total params: 3,706,091
Trainable params: 3,706,091
Non-trainable params: 0
_________________________________________________________________

使用tf.keras.Sequential()创建精确模型。

import tensorflow as tf
model = tf.keras.Sequential()
model.add(tf.keras.layers.Conv1D(300,19,strides=1,activation='relu',input_shape=(64,64)))
model.add(tf.keras.layers.Conv1D(300,19,strides=1,activation='relu'))
model.add(tf.keras.layers.MaxPool1D(pool_size=3))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(596,'relu'))
model.add(tf.keras.layers.Dense(35, activation='linear'))
model.add(tf.keras.layers.Activation('sigmoid'))
model.summary()

输出:

Model: "sequential_1"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 conv1d_2 (Conv1D)           (None, 46, 300)           365100    
                                                                 
 conv1d_3 (Conv1D)           (None, 28, 300)           1710300   
                                                                 
 max_pooling1d_1 (MaxPooling  (None, 9, 300)           0         
 1D)                                                             
                                                                 
 flatten_1 (Flatten)         (None, 2700)              0         
                                                                 
 dense_2 (Dense)             (None, 596)               1609796   
                                                                 
 dense_3 (Dense)             (None, 35)                20895     
                                                                 
 activation_1 (Activation)   (None, 35)                0         
                                                                 
=================================================================
Total params: 3,706,091
Trainable params: 3,706,091
Non-trainable params: 0
_________________________________________________________________

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM