我得到了一个有几个非平凡层的非平凡模型,我想做以下事情:我创建一个随机向量值v,其长度等于模型的参数数量。现在我想以直观的方式将向量v添加到模型参数中,即v的每个分量都添加到模型的单个参数中。然后将该总和设置为新的权重。所以基本上我需要的是所有的模型参数作为一个Nx1向量,将v添加到该Nx1向量,然后将该Nx1向量放回模型中。
目前我做的事情类似(未经测试):
N = model.count_params()
b = GenerateVectorV(N)
weights_per_layer = model.get_weights()
idx = 0
for i in range(0, len(weights_per_layer)):
sec = b[idx:idx+weights_per_layer[i].size]
idx += weights_per_layer[i].size
weights_per_layer[i] = weights_per_layer[i] + np.reshape(sec, weights_per_layer[i].shape)
然后我可以用改变的权重来更新模型。这感觉太像C代码了,我相信有更简单的方法。
1条答案
按热度按时间qxgroojn1#
让我们想象一下,你只是想添加高斯噪声(只是替换为任何其他噪声发生器),那么逻辑真的只是一个班轮
或者更简单