小编Ber*_*iel的帖子

PyTorch 数据加载器显示字符串数据集的奇怪行为

我正在研究 NLP 问题并使用 PyTorch。由于某种原因,我的数据加载器返回格式错误的批次。我的输入数据包含句子和整数标签。这些句子可以是句子列表或标记列表列表。稍后我将在下游组件中将标记转换为整数。

list_labels = [ 0, 1, 0]

# List of sentences.
list_sentences = [ 'the movie is terrible',
                   'The Film was great.',
                   'It was just awful.']

# Or list of list of tokens.
list_sentences = [['the', 'movie', 'is', 'terrible'],
                  ['The', 'Film', 'was', 'great.'],
                  ['It', 'was', 'just', 'awful.']]
Run Code Online (Sandbox Code Playgroud)

我创建了以下自定义数据集:

import torch
from torch.utils.data import DataLoader, Dataset

class MyDataset(torch.utils.data.Dataset):

    def __init__(self, sentences, labels):

        self.sentences = sentences
        self.labels = labels

    def __getitem__(self, i):
        result = {}
        result['sentences'] = …
Run Code Online (Sandbox Code Playgroud)

python pytorch dataloader

6
推荐指数
1
解决办法
5156
查看次数

Tensorflow:InvalidArgumentError:预期的图像(JPEG,PNG或GIF),文件为空

我是一个初学者。当我学习了tensorflow的程序员指南时,我试图定义一个用于“估计器”的dataset_input_fn函数。我遇到了一个奇怪的错误,它表明:

INFO:tensorflow:使用默认配置。

INFO:tensorflow:使用配置:{'_model_dir':'/ model','_tf_random_seed':无,'_save_summary_steps':100,'_save_checkpoints_steps':无,'_save_checkpoints_secs':600,'_session_config':无,'_keep :5,5,'_keep_checkpoint_every_n_hours':10000,'_log_step_count_steps':100,'_service':无,'_cluster_spec':,'_task_type':'worker','_task_id':0,'_global_id_in_cluster':0,'_master': '','_evaluation_master':'','_is_chief':True,'_num_ps_replicas':0,'_num_worker_replicas':1}

INFO:tensorflow:调用model_fn。

INFO:tensorflow:完成调用model_fn。

INFO:tensorflow:创建CheckpointSaverHook。

INFO:tensorflow:Graph已完成。

2018-03-12 10:22:14.699465:IC:\ tf_jenkins \ workspace \ rel-win \ M \ windows \ PY \ 36 \ tensorflow \ core \ platform \ cpu_feature_guard.cc:140]您的CPU支持此TensorFlow二进制文件的指令未编译使用:AVX2

INFO:tensorflow:正在运行local_init_op。

INFO:tensorflow:已运行local_init_op。

2018-03-12 10:22:15.913858:WC:\ tf_jenkins \ workspace \ rel-win \ M \ windows \ PY \ 36 \ tensorflow \ core \ framework \ op_kernel.cc:1202] OP_REQUIRES在iterator_ops.cc:870失败:无效的参数:预期的图像(JPEG,PNG或GIF),文件为空[[节点:DecodeJpeg = DecodeJpegacableable_fraction = 1,channels = 0,dct_method =“”,fancy_upscaling = true,ratio = 1,try_recover_truncated = false]

追溯(最近一次通话):文件“ F:\ Anaconda3 \ lib \ site-packages \ …

python python-3.x tensorflow

5
推荐指数
1
解决办法
2784
查看次数

使用带有 3 通道输入的 HoughCircles 时出错

在检测圆圈之前,我正在用red通道替换green通道。替换通道后,我将其通过模糊过滤器,然后进行霍夫变换以检测圆圈。但是当我这样做时,我收到一条糟糕的错误消息:

OpenCV(3.4.1) Error: Assertion failed (!_image.empty() && _image.type() == (((0) & ((1 << 3) - 1)) + (((1)-1) << 3)) && (_image.isMat() || 

_image.isUMat())) in HoughCircles, file /io/opencv/modules/imgproc/src/hough.cpp, line 1659
Traceback (most recent call last):

  File "circle_light.py", line 44, in <module>
    param1=param1,param2=param2,minRadius=minRadius,maxRadius=maxRadius)

cv2.error: OpenCV(3.4.1) /io/opencv/modules/imgproc/src/hough.cpp:1659: error: (-215) !_image.empty() 

&& _image.type() == (((0) & ((1 << 3) - 1)) + (((1)-1) << 3)) && (_image.isMat() || _image.isUMat()) in function HoughCircles
Run Code Online (Sandbox Code Playgroud)

我无法理解它,因此无法理解我可能做错了什么。这是我所做的事情的片段。

import cv2

img = cv2.imread("images/{}".format("img.png"), 1) …
Run Code Online (Sandbox Code Playgroud)

python opencv image-processing computer-vision hough-transform

5
推荐指数
2
解决办法
2895
查看次数

如何在Python中将RGBA图像转换为灰度图像?

我有形状数组(height, width, 4),即 RGBA 格式,我想将其转换为灰度。原始数组的 RGB 值为 0,并且图片完全基于白色背景上的 alpha 值进行渲染,因此将其转换为灰度的传统方法会失败(例如,cv2.cvtColor(img,cv2.COLOR_RGBA2GRAY))。

源图片:

源图像

python opencv rgba

5
推荐指数
1
解决办法
6753
查看次数

如何从 DataLoader 获取样本的文件名?

我需要用我训练的卷积神经网络的数据测试结果编写一个文件。数据包括语音数据收集。文件格式需要为“文件名,预测”,但我很难提取文件名。我像这样加载数据:

import torchvision
from torchvision import transforms
from torch.utils.data import DataLoader

TEST_DATA_PATH = ...

trans = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize((0.1307,), (0.3081,))
])

test_dataset = torchvision.datasets.MNIST(
    root=TEST_DATA_PATH,
    train=False,
    transform=trans,
    download=True
)

test_loader = DataLoader(dataset=test_dataset, batch_size=1, shuffle=False)
Run Code Online (Sandbox Code Playgroud)

我正在尝试按如下方式写入文件:

f = open("test_y", "w")
with torch.no_grad():
    for i, (images, labels) in enumerate(test_loader, 0):
        outputs = model(images)
        _, predicted = torch.max(outputs.data, 1)
        file = os.listdir(TEST_DATA_PATH + "/all")[i]
        format = file + ", " + str(predicted.item()) + '\n'
        f.write(format)
f.close()
Run Code Online (Sandbox Code Playgroud)

问题os.listdir(TESTH_DATA_PATH + "/all")[i]在于它与加载的文件顺序不同步test_loader。我能做什么?

python machine-learning pytorch torchvision

5
推荐指数
1
解决办法
1万
查看次数

Pytorch 从源代码构建给出错误 make: *** 没有规则来使目标“安装”。停止

我正在按照本指南在 Raspberry Pi3B 上从头开始构建 Pytorch。由于某种原因,出现错误:

Building wheel torch-1.2.0a0+f13fadd
-- Building version 1.2.0a0+f13fadd
cmake --build . --target install --config Release -- -j 4
make: *** No rule to make target 'install'.  Stop.
Run Code Online (Sandbox Code Playgroud)

当我打电话时python3 setup.py build。我正在运行 Python 3.5 版本,我不确定为什么这似乎失败了。

cmake raspberry-pi raspberry-pi3 pytorch

5
推荐指数
2
解决办法
2499
查看次数

关于 Pytorch 中的奇数图像尺寸

所以我目前正在构建一个 2 通道(也称为双通道)卷积神经网络,用于测量 2 个(二进制)图像之间的相似性。

我遇到的问题如下:

我的输入图像是 40 x 50,在 1 个卷积层和 1 个池化层之后(例如),输出大小是 18 x 23。那么如何在不以非整数输出大小结束的情况下进行更多池化呢?例如,将大小为 2 x 2 的 18 x 23 图像池化,输出大小为 9 x 11.5。

我似乎找不到任何合适的内核大小来避免这样的问题,在我看来,这是因为原始输入图像尺寸不是 2 的幂。例如,大小为 64 x 64 的输入图像没有有正确的填充大小等问题。

任何帮助深表感谢。

python machine-learning deep-learning pytorch

5
推荐指数
1
解决办法
2870
查看次数

当主机具有 CUDA 9 时,我可以使用 CUDA 10 运行 Docker 容器吗?

我在需要 CUDA 10 的 docker 容器中部署应用程序。这是运行应用程序使用的一些底层 pytorch 功能所必需的。

但是,主机服务器正在运行 docker ce 17、Nvidia-docker v 1.0 和 CUDA 版本 9,我将无法升级主机。

我的印象是我被铐在主机上可用的 v1 nvidia docker 运行时和 CUDA 版本上。

有没有办法在容器上运行 CUDA 10 以便我可以利用这个工具包的功能?

cuda docker nvidia-docker

5
推荐指数
1
解决办法
7995
查看次数

我有一个 pytorch 图像分类器训练,我想暂停训练并在程序暂停时保存权重。我可以这样做吗?

我正在训练一个已经训练了几天的分类器,但我的问题是我没有在整个训练过程中编写代码来保存 .pt 检查点,所以我最终只会得到一个权重文件当程序完成其所有时期时。有没有办法立即暂停训练(PAUSE BREAK)并保存模型的权重?

python pytorch

5
推荐指数
1
解决办法
1103
查看次数

如何使用 Pytorch 和/或 Numpy 高效查找多维矩阵数组中最大值的索引

背景

处理高维数据在机器学习中很常见。例如,在卷积神经网络 (CNN) 中,每个输入图像的尺寸可以是 256x256,并且每个图像可以具有 3 个颜色通道(红色、绿色和蓝色)。如果我们假设模型一次接收一批 16 张图像,则进入 CNN 的输入的维度为[16,3,256,256]。每个单独的卷积层都期望 形式的数据[batch_size, in_channels, in_y, in_x],并且所有这些数量通常会逐层变化(batch_size 除外)。我们用于表示由值组成的矩阵的术语[in_y, in_x]“特征映射”,这个问题涉及在给定层的每个特征映射中查找最大值及其索引。

我为什么要这样做?我想对每个特征图应用一个掩码,并且我想应用以每个特征图中的最大值为中心的掩码,为此,我需要知道每个最大值所在的位置。这种掩模应用是在模型的训练和测试期间完成的,因此效率对于减少计算时间至关重要。有许多 Pytorch 和 Numpy 解决方案可用于查找单例最大值和索引,以及查找沿单个维度的最大值或索引,但没有(我能找到)专用且高效的内置函数来查找最大值的索引一次沿着 2 个或更多维度。是的,我们可以嵌套在单个维度上运行的函数,但这些是一些效率最低的方法。

我尝试过的

  • 我看过这个 Stackoverflow 问题,但作者正在处理一个特殊情况的 4D 数组,它被简单地压缩为 3D 数组。接受的答案是专门针对这种情况的,而指向 TopK 的答案是误导性的,因为它不仅在单个维度上运行,而且k=1根据所提出的问题需要这样做,从而发展为常规torch.max调用。
  • 我看过这个 Stackoverflow 问题,但是这个问题及其答案,重点关注单一维度。
  • 我已经看过这个 Stackoverflow 问题,但我已经知道答案的方法,因为我在自己的答案中独立地表述了它我修改了该方法非常低效)。
  • 我看过这个Stackoverflow问题,但它不满足这个问题的关键部分,即与效率有关。
  • 我阅读了许多其他 Stackoverflow 问题和答案,以及 Numpy 文档、Pytorch 文档和 Pytorch 论坛上的帖子。
  • 我已经尝试实施很多不同的方法来解决这个问题,足以让我创建这个问题,以便我可以回答它并回馈社区以及将来寻找此问题解决方案的任何人。

绩效标准

如果我问有关效率的问题,我需要清楚地详细说明期望。我正在尝试为上述问题找到一种省时的解决方案(空间是次要的),而无需编写 C …

python numpy max numba pytorch

5
推荐指数
1
解决办法
2475
查看次数