keras he_normal内核初始化和全局平均池化

hwazgwia  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(312)

我试图在我的模型中实现he_normal内核初始化和全局平均池化,但我不知道如何实现。

#beginmodel
model = Sequential([
    Conv2D(16, 3, padding='same', activation='relu', input_shape=(100, 100,1)),
    MaxPooling2D(),
    Conv2D(32, 3, padding='same', activation='relu'),
    MaxPooling2D(),
    Conv2D(64, 3, padding='same', activation='relu'),
    MaxPooling2D(),
    Conv2D(128, 3, padding='same', activation='relu'),
    MaxPooling2D(),
    Flatten(),
    Dense(215, activation='relu'),
    Dense(10)
])
0ve6wy6x

0ve6wy6x1#

每个keras层都有一个初始化器参数,所以你可以用它来传递你的初始化器方法(he_normal出现在keras中)。
图像的全局平均池将网络的维数减小到2D。它可以用来代替展平操作。
我建议你也在你的最后一层使用一个softmax激活,以获得概率得分,如果你正在进行一个分类问题。
这里一个例子

n_class, n_samples = 10, 3
X = np.random.uniform(0,1, (n_samples,100,100,1))
y = np.random.randint(0,n_class, n_samples)

model = Sequential([
    Conv2D(16, 3, padding='same', activation='relu', kernel_initializer='he_normal',
           input_shape=(100, 100,1)),
    MaxPooling2D(),
    Conv2D(32, 3, padding='same', activation='relu', kernel_initializer='he_normal'),
    MaxPooling2D(),
    Conv2D(64, 3, padding='same', activation='relu', kernel_initializer='he_normal'),
    MaxPooling2D(),
    Conv2D(128, 3, padding='same', activation='relu', kernel_initializer='he_normal'),
    GlobalAvgPool2D(),
    Dense(215, activation='relu'),
    Dense(n_class, activation='softmax')
])

model.compile('adam', 'sparse_categorical_crossentropy')
model.fit(X,y, epochs=3)

相关问题