Keras 理解稠密层的参数单位和输入尺寸之间的差异
假设我有一个大小为(1000,64)的数据集,其中64是列数(即特征)。在Keras中,假设我想构建一个NN模型,如下所示:Keras 理解稠密层的参数单位和输入尺寸之间的差异,keras,Keras,假设我有一个大小为(1000,64)的数据集,其中64是列数(即特征)。在Keras中,假设我想构建一个NN模型,如下所示: 输入层:显然应该是一个层,其神经元数量等于我的数据集中的特征数量。因此,这里的神经元数量=64 隐藏层:我希望这个隐藏层有100个神经元 输出层:这是一个神经元,因为我正在处理一个二进制分类问题 现在,为了在Keras中构建上述架构,我通常会执行以下操作: model = Sequential() model.add(Dense(units=64, input_dim=6
model = Sequential()
model.add(Dense(units=64, input_dim=64, activation='tanh')) # Input layer
model.add(Dense(units=100, activation='tanh')) # Hidden layer
model.add(Dense(units=1, activation='sigmoid')) # Output layer
问题是我无法区分Dense()
层(作为第一层(输入层))的units
和input\u dim
参数。我确实理解input\u dim
是为了指定数据集中的特征数量(在我的例子中为64),但我不理解单位在这里对于输入层的作用。单位是否应为64?换句话说,对于输入层,参数units
应该是相同的input\u dim
非常感谢。让我们先看一下图示
就keras顺序模型符号而言,您将需要两个密集层(在图中标记为虚线框)
密集层1:它应该有100个神经元,每个神经元接受64个特征作为输入,因此这个密集层的定义将是
密度(单位=100,输入尺寸=64)
密集层2:这里需要一个神经元,它将上一个密集层的输出作为输入<密集层不需要代码>输入_dim
,因为它连接到顺序模型中的前一个密集层,并且无论前一个密集层输出什么,它都作为输入(对于每个神经元)
密度(单位=1)
因此,模型将是:
model = Sequential()
model.add(Dense(units=100, input_dim=64, activation='tanh')) # First Hidden layer
model.add(Dense(units=1, activation='sigmoid')) # Output layer
你可以把密集(单位=m,输入=n)
看作是一个层,层中有m
神经元,每个神经元都有n
输入。该层将输出m
输出(每个神经元一个) 明白了。温和而清晰的解释。非常感谢。如果有两个隐藏层(不包括输出层),第二个隐藏层是否为model.add(density(units=64,activation='tanh'))
?@EthanC,是的,正确,继续添加密集层,神经元数量为units
。在最后一层,它将是1
神经元和softmax
对于多类或sigmoid
对于二进制类一个有点极端的情况,如果我希望第二个隐藏层是200个神经元(同样,不包括输出层),理论上是可能的,不是吗?第二个隐藏层是模型吗(units=200,activation='tanh'))
?@EthanC。是的,从理论上讲,在一个层中有大量的神经元并没有错,而且200个神经元的代码片段是正确的。但是,增加宽度是否会增加模型的准确性,需要使用交叉验证进行检查。