没有入站节点-Keras CNN模型

时间:2018-12-15 05:36:25

标签: python keras-layer

我在喀拉拉邦训练了CNN模型,结构如下:

model_11 = Sequential()

#Convolutional Layers
model_11.add(Reshape((55, 1)))
model_11.add(Conv1D(50, kernel_size=5, strides=1, padding="same", activation = 'relu'))
model_11.add(Conv1D(24, kernel_size=4, strides=5, padding="same", activation = 'relu'))
model_11.add(Conv1D(23, kernel_size=2, strides=1, padding="same", activation = 'relu'))

#Dense Layers
model_11.add(Flatten())
model_11.add(Dense(units=30, activation='relu'))
model_11.add(Dense(units=15, activation='relu'))

model_11.add(Dense(units=1, activation='sigmoid'))

#Compile model
model_11.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

#Fit the model
model_11.fit(X_train, y_train, epochs=20, batch_size=20)



现在,我尝试了以下

model_11.layers[-3].output



这给了我以下错误

AttributeError:层density_40没有入站节点。



关于多个入站节点,有许多解决方案,但是到目前为止,对于没有入站节点,我还没有看到任何东西。尽管如此,该模型仍然运行良好(二进制分类)。

1 个答案:

答案 0 :(得分:1)

这是因为当您定义Sequential而不指定第一层的输入形状时,仅在fit函数期间创建计算图,因此层的输入和输出张量(以及因此不计算节点)。

如果需要访问层的输出张量,请为顺序模型中的第一层指定输入形状。因此,第一层定义如下:

model_11.add(Reshape((55, 1), input_shape=(55,))

现在model_11.layers[-3].output将返回张量。