我在喀拉拉邦训练了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没有入站节点。
关于多个入站节点,有许多解决方案,但是到目前为止,对于没有入站节点,我还没有看到任何东西。尽管如此,该模型仍然运行良好(二进制分类)。
答案 0 :(得分:1)
这是因为当您定义Sequential
而不指定第一层的输入形状时,仅在fit
函数期间创建计算图,因此层的输入和输出张量(以及因此不计算节点)。
如果需要访问层的输出张量,请为顺序模型中的第一层指定输入形状。因此,第一层定义如下:
model_11.add(Reshape((55, 1), input_shape=(55,))
现在model_11.layers[-3].output
将返回张量。