我有一个使用函数式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)
我想将其转换为顺序模型,但我对logit和输出层在顺序模型中的样子感到困惑。所以到目前为止我有什么:
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
并传递输入
,输出
并获取model.摘要()
并使用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
_________________________________________________________________