我想用 1003 个类重新训练初始模型,其中前 1000 个类与 imagenet(初始模型)相同。所以我采用了初始模型并提取了最终的层权重并添加了 3 列。我弹出了最后一层,创建了另一个包含 1003 个类的层,并且我改变了权重,因为前 1000 个类的权重与 inception 相同,但在训练时,准确度从 0 开始,这是我没想到的。出了什么问题?
这是我的代码
base_model = InceptionV3(weights='imagenet', include_top=False)
m = InceptionV3(weights='imagenet', include_top=True)
a=m.layers[312].get_weights()
k=np.random.normal(size=[2048,3])
k=k/3
l=np.random.normal(size=[3])
l=l/3
a[0]=np.concatenate((a[0],k),axis=1)
a[1]=np.concatenate((a[1],l),axis=0)
x = base_model.output
x = GlobalAveragePooling2D()(x)
predictions = Dense(nb_classes, activation='softmax')(x)
model = Model(input=base_model.input, output=predictions)
model.layers[312].set_weights(a)