[英]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
并传递inputs
, outputs
并获取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.