大佬教程收集整理的这篇文章主要介绍了我是否需要将各个层设置为不可训练以防止在 Keras GAN 模型中更新?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 tensroflow/keras 中查看了很多 GAN 的示例实现。他们中的大多数将首先编译鉴别器,然后循环遍历鉴别器的每一层并将可训练设置为 false。在我的实现中,我只是编译我的鉴别器,然后在整个鉴别器模型上设置 package main
import "fmt"
func main() {
fmt.Println(NodEID{0xFF}.PrefixLen()) // 0
fmt.Println(NodEID{0x7F}.PrefixLen()) // 1
fmt.Println(NodEID{0x3F}.PrefixLen()) // 2
fmt.Println(NodEID{0x1F}.PrefixLen()) // 3
fmt.Println(NodEID{0x0F}.PrefixLen()) // 4
// ...
fmt.Println(NodEID{0x00,0x00,0x05}.PrefixLen()) // 21
// ...
fmt.Println(NodEID{0,1}.PrefixLen()) // 159
fmt.Println(NodEID{}.PrefixLen()) // 159
}
const IDLength = 20
type NodEID [IDLength]byte
func (node NodEID) PrefixLen() (ret int) {
for i := 0; i < IDLength; i++ {
for j := 0; j < 8; j++ {
if (node[i]>>uint8(7-j))&0x1 != 0 {
return i*8 + j
}
}
}
return IDLength*8 - 1
}
。
dis.Trainiable = false
仅设置 dis = model.create_discriminator(w = DIM,h = DIM)
dis.compile(loss = keras.losses.binaryCrossentropy(label_smoothing = 0.2,from_logits = TruE),optimizer = mixed_precision.LossScaLeoptimizer(keras.optimizers.Adam(lr = 1e-4,beta_1 = 0.8)),metrics = ['accuracy'])
dis.sumMary()
gen = model.create_model(w = None,h = NonE)
gen.sumMary()
dis.Trainable = false
in_img = keras.input(shape = (DIM,DIM,3))
gen_out = gen(in_img)
dis_out = dis(gen_out)
gan = keras.Model(inputs = in_img,outputs = dis_out,name = 'gan')
gan.sumMary()
gan.compile(loss = keras.losses.binaryCrossentropy(from_logits = TruE),metrics = ['accuracy'])
就足够了吗?我现场检查了一层的权重,在训练生成器时它们似乎没有更新。人们只是通过循环遍历鉴别器中的每一层来迂腐,还是我遗漏了什么?
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的我是否需要将各个层设置为不可训练以防止在 Keras GAN 模型中更新?全部内容,希望文章能够帮你解决我是否需要将各个层设置为不可训练以防止在 Keras GAN 模型中更新?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。