为什么我在这里遇到被零除的错误?

2024-04-11

所以我正在关注这个文档中的教程 https://pytorch.org/tutorials/beginner/data_loading_tutorial.html在自定义数据集上。我使用的是 MNIST 数据集,而不是教程中的奇特数据集。这是Dataset我写的课:

class KaggleMNIST(Dataset):

    def __init__(self, csv_file, transform=None):
        self.pixel_frame = pd.read_csv(csv_file)
        self.transform = transform

    def __len__(self):
        return len(self.pixel_frame)

    def __getitem__(self, index):
        if torch.is_tensor(index):
            index = index.tolist()

        image = self.pixel_frame.iloc[index, 1:]
        image = np.array([image])

        if self.transform:
            image = self.transform(image)

        return image

它有效,直到我尝试对其使用转换:

tsf = transforms.Compose([transforms.ToTensor(), 
                          transforms.Normalize((0.5,), (0.5,))
                         ])
                          
trainset = KaggleMNIST('train/train.csv', transform=tsf)

image0 = trainset[0]

我查看了堆栈跟踪,看起来规范化正在这行代码中发生:

c:\program files\python38\lib\site-packages\torchvision\transforms\functional.py in normalize(tensor, mean, std, inplace)
--> 218     tensor.sub_(mean[:, None, None]).div_(std[:, None, None])

所以我不明白为什么除以零std应该是 0.5,远不是一个小值。

感谢您的帮助!

EDIT:

这并没有回答我的问题,但我发现如果我更改这些代码行:

image = self.pixel_frame.iloc[index, 1:] 
image = np.array([image])

to

image = self.pixel_frame.iloc[index, 1:].to_numpy(dtype='float64').reshape(1, -1)

本质上,确保数据类型是float64解决了问题。我仍然不确定为什么这个问题首先存在,所以我仍然很高兴得到一个解释清楚的答案!


The dtype读取的数据是int64

img = np.array([pixel_frame.iloc[0, 1:]])
img.dtype
# output
dtype('int64')

这迫使平均值和标准差转换为int64由于 std 为 0.5,因此它变为 0,并引发以下错误:

>>> tsf(img)
ValueError: std evaluated to zero after conversion to torch.int64, leading to division by zero.

这是因为平均值和标准差被转换为dtype标准化期间的数据集。

def normalize(tensor, mean, std, inplace=False):
    ...
    dtype = tensor.dtype
    mean = torch.as_tensor(mean, dtype=dtype, device=tensor.device)
    std = torch.as_tensor(std, dtype=dtype, device=tensor.device)
    if (std == 0).any():
        raise ValueError('std evaluated to zero after conversion to {}, leading to division by zero.'.format(dtype))

这就是为什么将 dtype 转换为float修复错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我在这里遇到被零除的错误? 的相关文章

随机推荐

  • Ruby on Rails 源代码安全/混淆[重复]

    这个问题在这里已经有答案了 我刚刚开始 Ruby on Rails 开发 我有一个关于源代码 隐私 的问题 据我目前所知 我还没有做部署 只是在本地开发环境中使用了FoR 当部署 RoR 应用程序时 所有源代码在服务器上都是 可见 的 我如
  • 从其子序列的集合中构建最短的字符串

    给定字符串中的子序列的集合 例如 abc acd bcd 问题是 如何从这些序列中确定最短的字符串 对于上面的例子 最短的字符串是abcd Here 子序列表示字符串的一部分 但不一定是连续的 喜欢acd是字符串的子序列abcd Edit
  • 防止 PowerShell 将值类型包装在 PSObject 中

    我有一个使用大量委托的 NET API 我的 API 有几个类似于以下的方法 public static class MyClass public static void DoSomethingWithString Func myFunc
  • 默认 xml 命名空间在 XAML 中如何工作?

    xmlns http schemas microsoft com winfx 2006 xaml presentation 该 url 如何映射到 NET 命名空间 您能否举例说明如何对自定义 NET 类 命名空间执行相同的操作 它是一个必
  • 无法启动 uwsgi 进程

    无法通过 ini 标志启动 uwsgi 进程 uwsgi ini file ini 没有任何 uwsgi pid ps aux grep uwsgi root 31605 0 0 0 3 5732 768 pts 0 S 06 46 0 0
  • 如何计算cosmos DB中的不同值

    我在 Cosmos DB 中创建了一些文档 如下所示 class class01 student lastReport Name st01 score C Name st02 score B lastTime 2018 05 10 clas
  • Django 测试返回登录重定向 302,即使用户已登录

    我对如何测试需要登录的页面感到非常困惑 我在响应中不断收到 302 而不是 200 并且在检查 pdb 中的响应时 我肯定会重定向到登录页面 我正在使用登录中间件而不是装饰器 如果相关的话 class SimplePageLoadsTest
  • Qt 自定义动画按钮

    我正在尝试创建自定义动画按钮 我找到了这个页面 按钮示例 https tympanus net Development ButtonHoverStyles 我喜欢这个网站上的 3 和 19 我试过做3个 但不一样 有人能帮我吗 我的网站上第
  • 我可以将 JavaScript 对象存储在 mySQL 数据库中吗?

    我正在从网页访问者收集数据并将其放入我创建的 JavaScript 对象中 但后来我希望能够引用他们输入的数据 我可以访问 MySQL 数据库 那么有没有办法在那里存储这个对象 我想尝试将其保留为对象格式 而不是将其分解为单独的部分 Sto
  • 在 RecyclerView 中显示包含视频文件的文件夹

    我在回收器视图中列出了所有媒体文件 假设媒体文件位于文件夹中 那么我也想在回收站视图中显示该文件夹 这是我列出媒体文件的代码 var projection arrayOf MediaStore Video Media DISPLAY NAM
  • 如何使用 XPath 2.0 识别数字序列中的重复值?

    我有一个 XPath 表达式 它为我提供了一系列值 如下所示 1 2 2 3 4 5 5 6 7 这很容易转换为一系列唯一值1 2 3 4 5 6 7 using distinct values 但是 我想要提取的是重复值列表 2 5 我想
  • 在哪里可以下载 Jai 和 Jai-imageio? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我需要获取 a 的像素颜色TIFF图片 如果您知道任何替代方案Jai and Jai imageio请告诉我 干得好 http www oracle
  • Application.Run 处的 CallbackOnCollectedDelegate(new Form1())

    我制作了一个非常小的应用程序 使用 SlimDX 捕获游戏中的屏幕 我按左键捕获 捕获有效 至少当我单击表单本身时 但是一旦我单击 Firefox 或任何其他应用程序 我就会收到此异常 对 CaptureScreen CaptureScre
  • R - XTS:从缺少行的每日时间序列中获取每个月的第一个日期和值

    我有一个每日时间序列作为myxtsxts 对象在R 日期格式为 d m y 现在 我想将原始时间序列减少为仅采用该系列中每个月的第一个日期和值的时间序列 myxts indexmday myxts 1 返回包含 d m y 且 d 1 的序
  • tomcat错误“打开的文件太多”

    我有一个应用程序在 tomcat 上运行 有时会出现以下错误 SEVERE Socket accept failed java net SocketException Too many open files at java net Plai
  • AWS CloudWatch:EndpointConnectionError:无法连接到终端节点 URL

    我只是按照这些说明进行操作 Link http docs aws amazon com AmazonCloudWatch latest DeveloperGuide QuickStartEC2Instance html 5D 以在我的 EC
  • 如果有“replaceWith”,则“fadeOut”不起作用。?

    当我使用fadeOut and replaceWith在一起时 淡出不起作用 但如果我只使用fadeOut有效 我想将它们一起使用 我的代码中怎么样 ajax type POST url url data dataString cache
  • 如何在 Xcode 中更新 Swift 依赖项

    在我创建一个带有依赖项的新 swift 包后 我调用swift package generate xcodeproj 如果我的依赖项有新版本 我会调用swift package update 我的依赖项的新版本已下载并构建 但 Xcode
  • MvvmCross 和 Xcode 故事板

    mvvmcross v3 支持情节提要 xcode 吗 If yes how There is an example Thanks MvvmCross 不太适合故事板 原因是故事板中有一些逻辑 例如Segue导航 它真正属于 MvvmCro
  • 为什么我在这里遇到被零除的错误?

    所以我正在关注这个文档中的教程 https pytorch org tutorials beginner data loading tutorial html在自定义数据集上 我使用的是 MNIST 数据集 而不是教程中的奇特数据集 这是D