TensorFlow,这个模型有多少层?

数据挖掘 深度学习 张量流
2022-03-07 04:52:06

我对机器学习很陌生,我不确定神经网络模型的 Tensorflow 实现。下面的模型有多少层?

model = Sequential() 
    model.add(Dense(200, activation="tanh"))
    model.add(Dropout(0.3))
    model.add(Dense(1, activation='sigmoid'))

我认为答案是 2,因为 dropout 适用于输入层,但输入形状是 (None, 20) 而不是 200,那么 Dense 层实际上是否遵循隐式输入层?

3个回答

在谈论前馈神经网络时,我们区分了输入层隐藏层输出层通常你有一个输入和输出层以及一个或多个隐藏层。

在您的情况下,代码中没有明确提到具有 20 个输入神经元的输入层,但它仍然存在。此外,还有一个具有 200 个神经元的隐藏层和一个具有单个神经元的输出层。

所以我会说你有一个三层网络。但也许还有其他关于如何计算前馈神经网络中层数的约定。有些可能会排除输入层。

如果您想计算 tensorflow 中的层数(当前版本2.x为最新),由于模型存储在变量model中,您只需要编写:

print(len(model.layers))

因为 dropout 适用于输入层

您所说的就行为而言是正确的,但Dropout是作为一个单独的层实现的,即keras.layers.Dropout我们可以像对待任何其他层一样对待它。

model = keras.Sequential() 
model.add(keras.layers.Dense(200, input_shape=(50,), activation="tanh"))
model.add(keras.layers.Dropout(0.3))
model.add(keras.layers.Dense(1, activation='sigmoid'))

model.summary()

在此处输入图像描述

for layer in model.layers:
    print(layer)

在此处输入图像描述

那么该密集层实际上是否遵循隐式输入层?

您的模型尚未构建。如果不提供输入形状或拟合数据,它就无法知道输入形状。因此,它无法知道第一层的权重/偏差的数量。