zxshidashuaige 2023-04-11 17:31 采纳率: 0%
浏览 2

关于#WGAN#的问题,如何解决?

在梯度惩罚项函数中,参数alpha的维度到底是多少,我看了很多都是alpha直接alpha=expand(real.size()),但是在我这边出现了这样的报错!
The expanded size of the tensor (64) must match the existing size (32) at non-singleton dimension 2. Target sizes: [32, 1, 64, 64]. Tensor sizes: [32, 1]

  • 写回答

2条回答 默认 最新

  • jiaminyan 2023-04-11 18:07
    关注

    在梯度惩罚项函数中,参数 alpha 的维度应该是和实际输出的维度相同。在常见的深度学习框架中(如 PyTorch 和 TensorFlow),通常使用 expand() 函数来扩展张量的维度。但是,在使用 expand() 函数时需要注意以下几点:

    扩展后的形状必须符合原始张量形状的 broadcasting 要求。简单来说,就是如果张量 A 的形状为 (3, 1),而要将其扩展成 (3, 2),那么扩展后的张量 B 的形状必须是 (3, 2),而不是 (2, 1)。

    expand() 函数会返回一个新的张量,因此需要将扩展后的张量重新赋值给原始张量。

    在 expand() 函数中,可以通过指定 -1 来自动计算某个维度的大小。

    下面是一个 PyTorch 中使用 expand() 函数来扩展张量的示例代码:
    import torch

    原始张量的形状为 (32, 1)

    real = torch.randn(32, 1)

    将 alpha 扩展成 (32, 1, 64, 64)

    alpha = torch.zeros(32, 1, 1, 1).expand(-1, -1, 64, 64)
    在上面的示例中,我们首先创建了一个形状为 (32, 1) 的张量 real,然后使用 expand() 函数将其扩展成 (32, 1, 64, 64)。其中,-1 表示自动计算某个维度的大小,而 -1, -1, 64, 64 则表示将 real 张量的第二维扩展成 alpha 张量的第三、四维。这样,就可以将扩展后的张量重新赋值给 alpha 变量,并在梯度惩罚项函数中使用了。

    如果您仍然遇到维度不匹配的问题,请检查一下输入张量和输出张量的形状是否正确,并确保使用 expand() 函数时按照上述建议进行操作。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月11日

悬赏问题

  • ¥15 悬赏Python-playwright部署在centos7上
  • ¥15 psoc creator软件有没有人能远程安装啊
  • ¥15 快速扫描算法求解Eikonal方程咨询
  • ¥20 我的是道格手机,重置后屏幕右上角出现红色字的未写入tee key 和未写入google key请问怎么去掉啊
  • ¥30 关于R语言运行分区生存模型中的问题!
  • ¥15 校内二手商品转让网站
  • ¥20 高德地图聚合图层MarkerCluster聚合多个点,但是ClusterData只有其中部分数据,原因应该是有经纬度重合的地方点,现在我想让ClusterData显示所有点的信息,如何实现?
  • ¥100 求Web版SPC控制图程序包调式
  • ¥20 指导如何跑通以下两个Github代码
  • ¥15 大家知道这个后备文件怎么删吗,为啥这些文件我只看到一份,没有后备呀