标签: pytorch

PyTorch Cuda 与 anaconda 不可用

我正在使用 anaconda 来调节我的环境,对于一个项目,我必须使用 GPU 进行网络训练。我在我的项目中使用 pytorch,并且正在尝试让 CUDA 工作。

我安装了cudatoolkit、numba、cudnn

不过,当我尝试这个命令时:

torch.cuda.is_available()
Run Code Online (Sandbox Code Playgroud)

我得到“False”作为输出。这是我的环境:

# Name                    Version                   Build  Channel
blas                      1.0                         mkl  
bzip2                     1.0.6                h470a237_2    conda-forge
ca-certificates           2018.03.07                    0  
cairo                     1.14.12              he6fea26_5    conda-forge
certifi                   2018.8.24                py35_1  
cffi                      1.11.5           py35he75722e_1  
cloudpickle               0.5.5                    py35_0  
cudatoolkit               9.2                           0    anaconda
cudnn                     7.2.1                 cuda9.2_0    anaconda
cycler                    0.10.0                     py_1    conda-forge
cython                    0.28.5           py35hf484d3e_0    anaconda
dask-core                 0.19.2                   py35_0  
dbus                      1.13.0               h3a4f0e9_0    conda-forge
decorator                 4.3.0                    py35_0  
expat                     2.2.5                hfc679d8_2    conda-forge
ffmpeg                    4.0.2                ha0c5888_1    conda-forge
fontconfig                2.13.1               h65d0f4c_0    conda-forge
freetype                  2.9.1 …
Run Code Online (Sandbox Code Playgroud)

pycuda anaconda conda pytorch

7
推荐指数
2
解决办法
2万
查看次数

在 PyTorch 中,是什么使张量具有非连续内存?

根据这个SO这个PyTorch讨论,PyTorch的view功能仅适用于连续内存,而reshape不能。在第二个链接中,作者甚至声称:

[ view] 将在非连续张量上引发错误。

但是张量什么时候有非连续内存呢?

pytorch

7
推荐指数
1
解决办法
4624
查看次数

如何在pytorch中加载tfrecord?

如何在 pytorch 中使用 tfrecord?

我已经下载了具有视频级特征的“Youtube8M”数据集,但它存储在tfrecord中。我尝试从这些文件中读取一些示例,将其转换为 numpy,然后加载到 pytorch 中。但它失败了。

    reader = YT8MAggregatedFeatureReader()
    files = tf.gfile.Glob("/Data/youtube8m/train*.tfrecord")
    filename_queue = tf.train.string_input_producer(
        files, num_epochs=5, shuffle=True)
    training_data = [
        reader.prepare_reader(filename_queue) for _ in range(1)
    ]

    unused_video_id, model_input_raw, labels_batch, num_frames = tf.train.shuffle_batch_join(
        training_data,
        batch_size=1024,
        capacity=1024 * 5,
        min_after_dequeue=1024,
        allow_smaller_final_batch=True  ,
        enqueue_many=True)

    with tf.Session() as sess:
        label_numpy = labels_batch.eval()
        print(type(label_numpy))

Run Code Online (Sandbox Code Playgroud)

但这一步却没有任何结果,只是卡了半天没有任何反应。

pytorch tfrecord

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

pytorch中的groupby聚合平均值

我有一个二维张量:

samples = torch.Tensor([
    [0.1, 0.1],    #-> group / class 1
    [0.2, 0.2],    #-> group / class 2
    [0.4, 0.4],    #-> group / class 2
    [0.0, 0.0]     #-> group / class 0
])
Run Code Online (Sandbox Code Playgroud)

以及对应于一个类的每个样本的标签:

labels = torch.LongTensor([1, 2, 2, 0])
Run Code Online (Sandbox Code Playgroud)

所以len(samples) == len(labels)。现在我想计算每个类别/标签的平均值。因为有 3 个类(0、1 和 2),所以最终向量应该具有维度[n_classes, samples.shape[1]]所以预期的解决方案应该是:

result == torch.Tensor([
    [0.1, 0.1],
    [0.3, 0.3], # -> mean of [0.2, 0.2] and [0.4, 0.4]
    [0.0, 0.0]
])
Run Code Online (Sandbox Code Playgroud)

问题:如何在纯 pytorch 中完成此操作(即没有 numpy,以便我可以自动分级)并且理想情况下没有 for 循环?

pytorch

7
推荐指数
1
解决办法
5709
查看次数

PyTorch 卷积“in_channels”和“out_channels”的含义?

从Convolution 的PyTorch文档中,我看到该函数torch.nn.Conv1d需要用户传递参数in_channelsout_channels

我知道这些指的是“输入通道”和“输出通道”,但我不确定它们在卷积的上下文中意味着什么。我的猜测是,这in_channels相当于输入特征,也out_channels相当于输出特征,但我不确定。

有人可以解释一下这些论点指的是什么吗?

python deep-learning conv-neural-network pytorch

7
推荐指数
2
解决办法
9727
查看次数

为什么我们要在pytorch中使用to()方法?

这个方法我已经见过很多次了。这样做的目的和好处是什么?

python pytorch

7
推荐指数
1
解决办法
4215
查看次数

尝试理解 PyTorch 中的 cross_entropy 损失

这是一个非常新手的问题,但我试图解决 Torch 中的 cross_entropy 损失问题,所以我创建了以下代码:

x = torch.FloatTensor([
                        [1.,0.,0.]
                       ,[0.,1.,0.]
                       ,[0.,0.,1.]
                       ])

print(x.argmax(dim=1))

y = torch.LongTensor([0,1,2])
loss = torch.nn.functional.cross_entropy(x, y)

print(loss)
Run Code Online (Sandbox Code Playgroud)

输出以下内容:

tensor([0, 1, 2])
tensor(0.5514)
Run Code Online (Sandbox Code Playgroud)

我不明白的是,鉴于我的输入与预期输出匹配,为什么损失不为 0?

python machine-learning pytorch

7
推荐指数
1
解决办法
9539
查看次数

如何在pytorch MNIST数据集中选择特定标签

我正在尝试仅使用 PyTorch Mnist 数据集中的特定数字创建数据加载器

我已经尝试创建自己的采样器,但它不起作用,而且我不确定我是否正确使用了蒙版。

class YourSampler(torch.utils.data.sampler.Sampler):

    def __init__(self, mask):

        self.mask = mask


    def __iter__(self):

        return (self.indices[i] for i in torch.nonzero(self.mask))


    def __len__(self):

        return len(self.mask)


mnist = datasets.MNIST(root=dataroot, train=True, download=True, transform = transform)   

mask = [True if mnist[i][1] == 5 else False for i in range(len(mnist))]

mask = torch.tensor(mask)   

sampler = YourSampler(mask)

trainloader = torch.utils.data.DataLoader(mnist, batch_size=4, sampler = sampler, shuffle=False, num_workers=2)

Run Code Online (Sandbox Code Playgroud)

到目前为止,我遇到了许多不同类型的错误。对于此实现,它是“停止迭代”。我觉得这很简单/愚蠢,但我找不到一个简单的方法来做到这一点。感谢您的帮助!

python pytorch

7
推荐指数
2
解决办法
7904
查看次数

如何在 Pytorch 中进行三次样条插值和积分

在Pytorch中,是否有类似于Scipy的三次样条插值?给定一维输入张量xy,我想对这些点进行插值并在 处求值xs以获得ys。另外,我想要一个积分器函数来查找,即从到 的Ys样条插值的积分。x[0]xs

python interpolation numeric pytorch

7
推荐指数
2
解决办法
4948
查看次数

对于 CPU 上的 numpy 数组,torch.as_tensor() 与 torch.from_numpy() 相同吗?

在 CPU 上,与 numpy 数组torch.as_tensor(a)相同, ?如果没有,那为什么不呢?torch.from_numpy(a)a

从文档中torch.as_tensor

如果数据是ndarray对应的dtype并且device是cpu,则不会执行任何复制。

从文档中torch.from_numpy

返回的张量和ndarray共享相同的内存。对张量的修改将反映在 中,ndarray反之亦然。

在这两种情况下,结果张量的任何更改都会更改原始 numpy 数组。

a = np.array([[1., 2], [3, 4]])
t1 = torch.as_tensor(a)
t2 = torch.from_numpy(a)
t1[0, 0] = 42.
print(a)
# prints [[42., 2.], [3., 4.]]
t2[1, 1] = 55.
print(a)
# prints [[42., 2.], [3., 55.]]
Run Code Online (Sandbox Code Playgroud)

此外,在这两种情况下,尝试调整张量的大小都会导致错误。

pytorch

7
推荐指数
1
解决办法
4160
查看次数