我想比较使用在imagenet上预训练的VGG16模型的分类器,以及如果我不使用imagenet权重它将如何执行,所以我使用
加载模型 model = applications.VGG16(weights=None, include_top=False, input_shape=(img_width, img_height, 3))
根据Keras documentation使用"权重=无"导致随机初始化的权重。
我现在的问题是神经网络总是提供相同的输出,即使在训练多个时期并尝试不同的学习速率之后,它总是将所有图像预测为同一类。
我不认为输入数据(2个不同类的图像)或我的代码是问题,因为在使用imagenet权重和训练进行初始化时,我的分类器学得很好并且在测试集上达到了90%的准确度。 / p>
问题是什么?也许重量初始化?但在加载像
这样的模型时,我不知道如何使用不同的初始化程序答案 0 :(得分:0)
您可能正面临消失的梯度问题。
如果使用relu激活功能,请查看“ kaiming初始化”以了解您的体重。目的是在前进过程中的每一层之后,将输出的平均值保持为0,并将标准偏差保持为1。
对于relu激活功能,您必须使用随机正态分布乘以2 /(给定层的输入数量)的平方根来初始化。
weight_initialisation = random_normal * sqrt(2/(number of input for the layer))
对于CNN,我认为输入数将是过滤器数*内核中的单元数(对于[5,5]内核,则为5 * 5)