MachineLP的Github(欢迎follow):https://github.com/MachineLP
我们在搭建模型的时候,受到一些收敛条件的限制,像wgan_loss需要讲权重设置在[-0.01, 0.01],这个操作在TF中是这样完成中。
首先, 需要获得你搭建net的左右变量:
D_vars = tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, 'Discriminator_dcgan')
其中,'Discriminator_dcgan' 是net的名字,其下一层包含很多变量的名字。
然后,遍历每一个变量,将其限定在一定的范围:即小于-1的值设定在-1,大于1的值设定在1。
最后,在每个batch更新完参数后,需要run一下: _ = sess.run(clip_disc_weights)
代码如下:
D_vars = tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, 'Discriminator_dcgan')
clip_ops = []
for var in D_vars:
clip_bounds = [-.01, .01]
clip_ops.append(
tf.assign(
var,
tf.clip_by_value(var, clip_bounds[0], clip_bounds[1])
)
)
clip_disc_weights = tf.group(*clip_ops)
......
_ = session.run(clip_disc_weights)
总结,wgan_loss不加入权重限制不会收敛,同时wgan时候经过严格的理论推导,当理论不充分时,在使用的时候需要多实验室,实验出好的结果,可以再找理论支撑嘛,哈哈丷
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有