SAGAN程序调试中遇到的一些问题总结

(1)运行程序过程中出现了interrupted by signal6:SIGABRT 的错误,并提示无法找到CUDNN的句柄

     解决方法:在指定的GPU上面运行程序

                        import os

                        os.environ["CUDA_VISIBLE_DEVICES"]="3"

(2)SAGAN 是如何实现将一个1×1×128维的噪声转变成图像的

     在输入端通过tf.nn.conv2d_transpose函数输出4×4大小的feature(transpose函数有一个参数out_shape可以指定输出feature的宽度和高度),然后就可以采用正常的图像卷积方式进行逐步upsample-conv的形式得到指定大小的输出图像

(3)SAGAN中的attention layer

f = conv(x, ch // 8, kernel=1, stride=1, sn=sn, scope='f_conv')
g = conv(x, ch // 8, kernel=1, stride=1, sn=sn, scope='g_conv')
h = conv(x, ch, kernel=1, stride=1, sn=sn, scope='h_conv')

这里的f和g 用来计算attention map,输出的feature 个数 遵从原文中的Wg(c/8*c)

计算attention map: f进行转置后与g进行内积计算

s = tf.matmul(hw_flatten(g), hw_flatten(f), transpose_b=True)

hw_flatten(g):将二维feature展开成一维向量

tf.reshape(x, shape=[x.shape[0], -1, x.shape[-1]])将原本的feature维度由[32,16,16,32]reshape成为[32,256,32]

注意这里reshape的参数shape必须是一个确定的值,x.shape[0]或者x.shape[-1]的取值不能是None

hw_flatten(f):同上

将二维feature展开成一维之后,就可以进行矩阵的内积运算了

内积运算的结果经过softmax进行归一化处理,与h进行内积运算,然后再次reshape成为[32,16,16,256]self-attention maps

(4)SAGAN中的SN操作

https://blog.csdn.net/a312863063/article/details/83552068

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值