我已经阅读了很多关于可分离卷积的好东西,我正试图将其付诸实践。
我选择了带有11599列车的64x64数据集和带有200个标签的2891测试数据集。
i = inp
i = Conv2D(filters = 32, kernel_size = 4)(i)
i = BatchNormalization()(i)
i = LeakyReLU()(i)
i = MaxPooling2D(2)(i)
i = Conv2D(filters = 32, kernel_size = 4)(i)
i = BatchNormalization()(i)
i = LeakyReLU()(i)
i = MaxPooling2D(2)(i)
i = SeparableConv2D(filters = 128, kernel_size = 4, strides = 1)(i)
i = BatchNormalization()(i)
i = LeakyReLU()(i)
i = SeparableConv2D(filters = 128, kernel_size = 4, strides = 1)(i)
i = BatchNormalization()(i)
i = LeakyReLU()(i)
i = GlobalMaxPooling2D()(i)
i = Dense(len(labels), activation = 'softmax')(i)
m = Model(inp, i)
这个模型给了我0.75测试和0.89训练精度
然后我决定尝试可分离卷积,但我找不到简单的例子。在Keras存储库中,它在xception中使用,但对我来说太难了。
StartUpdateStr = "Update tblAfterSale SET "
EndUpdateStr = " WHERE IDAfterSale = "
IDAfterSale = Me.lblIDAfterSale.Caption
db.Execute StartUpdateStr & "Data1 = " & Me.Lable1.Caption & EndUpdateStr & IDAfterSale
db.Execute StartUpdateStr & "Data2 = " & Me.Lable2.Caption & EndUpdateStr & IDAfterSale
db.Execute StartUpdateStr & "Data3 = " & Me.Lable3.Caption & EndUpdateStr & IDAfterSale
db.Close
通过这个模型,我获得了大致相同的结果。 我认为我做错了什么。
答案 0 :(得分:2)
嗯 - 这很难说,但我认为你误解了使用SeparableConvolution
的主要目的。引入的分解主要有两个原因:
所以 - 在你的情况下,你可以通过以下方式检查是否发生了这种情况:
所有这些都可以通过网络日志和model.summary()
功能获得。