Tensorflow:实现maxnorm,是否必须通过对图的操作来实现?

2024-10-03 19:21:38 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我想使用maxnorming,这意味着一旦权重矩阵的欧几里德范数太大,它们的列就被规范化了。

理想的情况下我会这样做

def renorm_weights(w, b, max_norm):
     l2norm_inv_scaled = max_norm * tf.rsqrt(tf.reduce_sum(w**2, reduction_indices=0))
     scale =  tf.minimum(l2norm_inv_scaled, tf.constant(1.0))
     return (tf.mul(w, scale), tf.mul(b, scale))

然后我可以像

^{pr2}$

但是,就我所知,这在tensorflow中是不可能的,因为在创建会话之前,这些操作必须在图上定义(函数独立于图)。

我的问题是我的想法是正确的,而且我提出的方法是正确的。

所以我想我得这样做。正在设置我的图形的位置:

^{pr3}$

当然可以使用^{cd1>}作为^{cd2>}但现在不要终止。 我会用的

^{pr4}$

Tags: 范数normtf矩阵规范化max权重scale