将重量加载到新模型,正确加载了多少



我想将权重从模型A加载到模型B。模型B的最后几层有点不同,因此不应该加载这些层的权重。我使用带有参数的load_weights,这样就可以跳过不同的层。

load_weights(    filepath, by_name=True, skip_mismatch=True)

有没有办法知道正确装载的重量部分?我只想确保90%以上的重量都能正确加载。

您可以使用numpy.testing来检查两个模型的权重之间的差异。例如,

np.testing.assert_allclose(
A_model.layers[0].bias.numpy(), B_model.layers[0].bias.numpy()
)

np.testing.assert_allclose可以给出%不匹配的元素:

a = [1.0, 2, 3] 
b = np.array([1.0, 8, 9])
try:
np.testing.assert_allclose(a, b)
except Exception as e:
print(e)

异常打印

Not equal to tolerance rtol=1e-07, atol=0
Mismatched elements: 2 / 3 (66.7%)
Max absolute difference: 6.
Max relative difference: 0.75
x: array([1., 2., 3.])
y: array([1., 8., 9.])

最新更新