无入站节点 - Keras CNN 模型
No Inbound Nodes - Keras CNN Model
我在 keras 中训练了一个具有以下结构的 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: Layer dense_40 has no inbound nodes.
有很多关于多个入站节点的解决方案,但到目前为止我还没有看到任何没有入站节点的解决方案。尽管如此,该模型运行良好(二元分类)。
这是因为当你定义一个Sequential
而不指定第一层的输入形状时,计算图只在fit
函数期间创建,因此层的输入和输出张量(因此节点)不计算。
如果您需要访问层的输出张量,请在顺序模型中指定第一层的输入形状。因此第一层定义为:
model_11.add(Reshape((55, 1), input_shape=(55,))
现在 model_11.layers[-3].output
将 return 张量。
我在 keras 中训练了一个具有以下结构的 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: Layer dense_40 has no inbound nodes.
有很多关于多个入站节点的解决方案,但到目前为止我还没有看到任何没有入站节点的解决方案。尽管如此,该模型运行良好(二元分类)。
这是因为当你定义一个Sequential
而不指定第一层的输入形状时,计算图只在fit
函数期间创建,因此层的输入和输出张量(因此节点)不计算。
如果您需要访问层的输出张量,请在顺序模型中指定第一层的输入形状。因此第一层定义为:
model_11.add(Reshape((55, 1), input_shape=(55,))
现在 model_11.layers[-3].output
将 return 张量。