Cod*_*die 5 python keras tensorflow
我已经以 .h5 格式保存了许多模型。我想比较他们的特征,例如重量。我不知道如何以表格和数字的形式适当地比较它们。提前致谢。
体重内省是一项相当高级的工作,需要针对特定模型的处理。可视化权重在很大程度上是一项技术挑战,但如何处理这些信息则是另一回事 - 我将主要讨论前者,但会涉及后者。
更新:我还建议查看 RNN以了解权重、梯度和激活可视化。
可视化权重:一种方法如下:
model.layers[1].get_weights()
kernel
、recurrent
和bias
,每组都有不同的用途。每个权重矩阵内都有门权重 - 输入、单元、忘记、输出。对于Conv层,区别在于过滤器(dim0)、内核和步幅之间。解释权重:有几种方法:
模型比较:没有一种方法可以简单地并排查看来自不同模型的两个权重并决定“这是更好的一个”;分别分析每个模型,例如如上所述,然后决定哪个模型的优点大于缺点。
然而,最终的决定因素将是验证性能——而且它也是更实用的。它是这样的:
权重可视化应该主要作为一种调试或记录工具 - 简而言之,即使我们目前对神经网络有最好的理解,也无法仅通过查看权重来判断模型的泛化效果如何。
建议:还可视化层输出- 请参阅底部的此答案和示例输出。
视觉示例:
from tensorflow.keras.layers import Input, Conv2D, Dense, Flatten
from tensorflow.keras.models import Model
ipt = Input(shape=(16, 16, 16))
x = Conv2D(12, 8, 1)(ipt)
x = Flatten()(x)
out = Dense(16)(x)
model = Model(ipt, out)
model.compile('adam', 'mse')
X = np.random.randn(10, 16, 16, 16) # toy data
Y = np.random.randn(10, 16) # toy labels
for _ in range(10):
model.train_on_batch(X, Y)
def get_weights_print_stats(layer):
W = layer.get_weights()
print(len(W))
for w in W:
print(w.shape)
return W
def hist_weights(weights, bins=500):
for weight in weights:
plt.hist(np.ndarray.flatten(weight), bins=bins)
W = get_weights_print_stats(model.layers[1])
# 2
# (8, 8, 16, 12)
# (12,)
hist_weights(W)
Run Code Online (Sandbox Code Playgroud)
Conv1D 输出可视化:(来源)
归档时间: |
|
查看次数: |
5817 次 |
最近记录: |