在Keras文档中有几件事我不理解
它从
-limit, limit
内的均匀分布中抽取样本 限制为sqrt(6 / (fan_in + fan_out))
,其中fan_in
为 重量张量中输入单位的数量,fan_out
是数量 张量中的输出单位的数量。
在哪里可以看到模型的fan_in
和fan_out
?
这是我的模型:
model = Sequential() model.add(Flatten(input_shape=(224,224,3))) model.add(Dense(256, activation='relu')) model.add(Dropout(0.5)) model.add(Dense(1, activation='sigmoid'))
答案 0 :(得分:1)
使用model.summary()
,您将看到每一层的input
和output
形状,这就是 Glorot统一初始化器用于fan_in
和分别fan_out
。
您的示例:
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
flatten_1 (Flatten) (None, 150528) 0
_________________________________________________________________
dense_1 (Dense) (None, 256) 38535424
_________________________________________________________________
dropout_1 (Dropout) (None, 256) 0
_________________________________________________________________
dense_2 (Dense) (None, 1) 257
=================================================================
因此dense_1
的{{1}}等于150528(它是输入),而fan_in
等于256(它是输出)。另一方面,fan_out
将具有dense_2
256(来自先前密集层的输入)和fan_in
1(其输出形状)。