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

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(使用前将#替换为@)

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

  • 列出类的所有实例

    我编写了一个 Python 模块 其中有几个类继承自一个名为MasterBlock 我想在脚本中导入此模块 创建这些类的多个实例 然后获取该类的所有子级的所有现有实例的列表MasterBlock班级 我找到了一些解决方案vars Block
  • 缺少 python 配置

    我正在安装一个程序 需要安装 python config 唯一的问题是我目前没有 python config 而且我似乎不知道如何获取它 经过搜索后 我应该可以通过以下方式安装它 yum install python devel 然而 这样
  • Pytorch 损失为 nan

    我正在尝试用 pytorch 编写我的第一个神经网络 不幸的是 当我想要得到损失时遇到了问题 出现以下错误信息 RuntimeError Function LogSoftmaxBackward0 returned nan values in
  • 是否可以将名为“None”的值添加到枚举类型?

    我可以将名为 None 的值添加到枚举中吗 例如 from enum import Enum class Color Enum None 0 represent no color at all red 1 green 2 blue 3 co
  • 以类似字典的方式将新项目添加到某些结构化数组中

    我想扩展 numpy 中的结构化数组对象 以便我可以轻松添加新元素 例如 对于一个简单的结构化数组 gt gt gt import numpy as np gt gt gt x np ndarray 2 dtype names A B fo
  • 隐藏控制台并执行 python 脚本

    我正在尝试使用 pyinstaller 在 Windows 10 上使用 pyqt5 模块编译在 python 3 中构建的 python 脚本 该脚本在运行时隐藏窗口 为了编译我的脚本 我执行了以下命令 pyinstaller onefi
  • 在 django 中构建动态表单

    我正在尝试根据存储在数据库中的字段及其定义动态构建一个表单 在我的数据库中 我定义了 1 个带有一些标签的复选框和 1 个带有一些标签的文本字段 如何根据数据库中的数据在我的视图中动态构建表单 Thanks 以下是我在 EuroDjango
  • 如何在cvxpy中编写多个约束?

    我想在 cvxpy 下的优化问题中添加许多约束 在 matlab 中 我可以通过添加一行 subject to 然后使用 for 循环来生成约束 我怎样才能在 cvxpy 中做同样的工作 因为 cvxpy 中没有 服从 概念 有什么建议吗
  • Django/gevent socket.IO 与 redis pubsub。我把东西放在哪里?

    我有一个独立的 python 脚本 它只是从 Twitter 的流 API 捕获数据 然后在收到每条消息时 使用 redis pubsub 将其发布到频道 tweets 这是该脚本 def main username username pa
  • 使用 Flask 时在 Python 中实现持久数据库连接的最佳实践

    我的问题是关于在生产环境或其他关注性能的环境中使用 Flask 时处理数据库连接的推荐方法 在 Flask 中 g 对象可用于存储内容 并且可以将打开的数据库连接放置在那里 以允许应用程序在同一请求期间的后续数据库查询中重用它们 但是 g
  • 使用python同时播放两个正弦音

    我正在使用 python 来播放正弦音 音调基于计算机的内部时间 以分钟为单位 但我想根据秒同时播放一个音调 以获得和谐或双重的声音 这就是我到目前为止所拥有的 有人能指出我正确的方向吗 from struct import pack fr
  • Flask-httpauth: get_password 装饰器如何为 basic-auth 工作?

    我想知道有没有人用过这个烧瓶延伸 https github com miguelgrinberg flask httpauth简化 http basic auth 基本上我不明白这个example https github com migu
  • 为 Keras 编写自定义数据生成器

    我将每个数据点存储在 npy 文件中 其中shape 1024 7 8 我想通过类似的方式将它们加载到 Keras 模型中ImageDataGenerator 所以我编写并尝试了不同的自定义生成器 但它们都不起作用 这是我改编的一个this
  • “分页文件太小,无法完成此操作”尝试训练 YOLOv5 对象检测模型时出错

    我有大约 50000 个图像和注释文件用于训练 YOLOv5 对象检测模型 我在另一台计算机上仅使用 CPU 训练模型没有问题 但需要太长时间 因此我需要 GPU 训练 我的问题是 当我尝试使用 GPU 进行训练时 我不断收到此错误 OSE
  • 如何从列表中删除“\xe2”

    我是 python 新手 正在使用它在我的项目中使用 nltk 对从网页获得的原始数据进行单词标记后 我得到了一个包含 xe2 xe3 x98 等的列表 但是我不需要这些并想删除它们 我只是尝试过 if x in a and if a st
  • pip:证书失败,但curl 有效

    我们在客户端安装了根证书 https 连接适用于curl 但如果我们尝试使用pip 它失败 Could not fetch URL https installserver 40443 pypi simple pep8 There was a
  • 计算素数并附加到列表

    我最近开始尝试使用 python 解决 Euler 项目的问题 并且在尝试计算素数并将其附加到列表中时遇到了这个障碍 我编写了以下代码 但我很困惑为什么它在运行时不输出任何内容 import math primes def isPrime
  • 使用 PuLP 进行线性优化,变量附加条件

    我必须用 Pull 解决 Python 中的整数线性优化问题 我解决了基本问题 现在我必须添加额外的约束 有人可以帮助我用逻辑指示器添加条件吗 逻辑限制是 如果 A gt 20 则 B gt 5 这是我的代码 from pulp impor
  • 矩阵求逆 (3,3) python - 硬编码与 numpy.linalg.inv

    对于大量矩阵 我需要计算定义为的距离度量 尽管我确实知道强烈建议不要使用矩阵求逆 但我没有找到解决方法 因此 我尝试通过对矩阵求逆进行硬编码来提高性能 因为所有矩阵的大小均为 3 3 我预计这至少会是一个微小的改进 但事实并非如此 为什么
  • 张量流多元线性回归不收敛

    我正在尝试使用张量流训练具有正则化的多元线性回归模型 由于某种原因 我无法获取以下代码的训练部分来计算我想要用于梯度下降更新的误差 我在设置图表时做错了什么吗 def normalize data matrix averages np av

随机推荐

  • 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