标签: torch

如何使用交互式 lua 或 torch 会话正确要求 lua 包?

一般来说,我在安装和需要软件包时遇到困难。例如,对于inspect.lua包,我首先按照包中的说明通过luarocks安装(https://github.com/kikito/inspect.lua):

luarocks install inspect
Run Code Online (Sandbox Code Playgroud)

然后,如果我启动luatorch7 ( th),我将通过以下方式需要它:

local inspect = require 'inspect'
Run Code Online (Sandbox Code Playgroud)

该检查变量始终是nil

require 'inspect'; print(inspect)
Run Code Online (Sandbox Code Playgroud)

返回nil

最初,我不确定它是否正在返回nil,因此当我尝试时,例如inspect(1)我会收到错误“尝试调用全局‘检查’(零值)”。

使用火炬,似乎我可以成功使用“import 'inspect'”,尽管我不确定为什么这有效,而 require 却不起作用。

我究竟做错了什么?

lua luarocks torch

3
推荐指数
1
解决办法
900
查看次数

Lua - 理解setmetatable

我正在尝试构建一个CNN使用Torch 7. 我很新Lua。我试图点击此链接。我遇到了setmetatable以下代码块中调用的内容:

setmetatable(train_set, 
{
  __index = function(t, i) 
    return {t.data[i], t.label[i]}
  end
});
Run Code Online (Sandbox Code Playgroud)

我知道第二个参数充当 table 的元表train_set

1)是t元表还是t只是另一个名称train_set

2)每当一个函数用于反对 时__index,解释器是否假设第一个参数(t)是一个表(或元表,取决于第一个问题的答案)?第二个参数总是 orkeyindex

3)我的理解是,如果我使用train_set.data[1],它将调用__index. 这里的答案是当表中不存在__index时调用。key但与t.data[1]相同train_set.data[1]?如果是这样,口译员怎么知道这一点?

lua metatable lua-table torch

3
推荐指数
1
解决办法
5241
查看次数

收集函数中参数维度的影响

我正在尝试使用pytorch中的gather函数,但无法理解参数的作用dim

代码:

t = torch.Tensor([[1,2],[3,4]])
print(torch.gather(t, 0, torch.LongTensor([[0,0],[1,0]])))
Run Code Online (Sandbox Code Playgroud)

输出:

 1  2
 3  2
[torch.FloatTensor of size 2x2]
Run Code Online (Sandbox Code Playgroud)

维度设置为 1:

print(torch.gather(t, 1, torch.LongTensor([[0,0],[1,0]])))
Run Code Online (Sandbox Code Playgroud)

输出变为:

 1  1
 4  3
[torch.FloatTensor of size 2x2]
Run Code Online (Sandbox Code Playgroud)

功能实际上如何gather运作?

torch

3
推荐指数
1
解决办法
3741
查看次数

Vararg (`...`) 函数参数不适用于 `arg` 变量

对于 lua,根据本教程,可以通过名为 arg 的隐藏变量访问函数的三个点。

https://www.lua.org/pil/5.2.html

我写了一个非常简单的程序

require 'torch'
function triDot(...)
    print('in triDot now')
    print(arg)
    for i,v in ipairs(arg) do
        print('i is',i,'v is',v)
    end
end
triDot('name1','name2') 
Run Code Online (Sandbox Code Playgroud)

事实证明 arg 根本不包含 {'name1', 'name2'} 而是一堆系统参数。For 循环不会产生任何结果。

{ 0:“/home/jun/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th”-2:“-e”-5:“/home/jun/torch/install/bin /luajit" -3 : "package.path="/home/jun/.luarocks/share/lua/5.1/?.lua;/home/jun/.luarocks/share/lua/5.1/?/init.lua; /home/jun/torch/install/share/lua/5.1/?.lua;/home/jun/torch/install/share/lua/5.1/?/init.lua;"..package.path; package.cpath ="/home/jun/.luarocks/lib/lua/5.1/?.so;/home/jun/torch/install/lib/lua/5.1/?.so;"..package.cpath" -4 : " -e" -1 : "本地 k,l,_=pcall(require,"luarocks.loader") _=k 和 l.add_context("trepl","scm-1")" }

任何人都可以帮忙吗?

lua arguments torch

3
推荐指数
1
解决办法
2342
查看次数

错误 libtorch_python.so:无法打开共享对象文件:没有这样的文件或目录

我正在尝试实现 fastai pretrain 语言模型,它需要火炬才能工作。运行代码后,我遇到了一些关于 import torch._C 的问题

我在我的 linux python 3.7.1 上运行它,通过 pip: torch 1.0.1.post2, cuda V7.5.17。我收到此错误:

Traceback (most recent call last):
  File "pretrain_lm.py", line 7, in <module>
    import fastai
  File "/home/andira/anaconda3/lib/python3.7/site-packages/fastai/__init__.py", line 1, in <module>
    from .basic_train import *
  File "/home/andira/anaconda3/lib/python3.7/site-packages/fastai/basic_train.py", line 2, in <module>
    from .torch_core import *
  File "/home/andira/anaconda3/lib/python3.7/site-packages/fastai/torch_core.py", line 2, in <module>
    from .imports.torch import *
  File "/home/andira/anaconda3/lib/python3.7/site-packages/fastai/imports/__init__.py", line 2, in <module>
    from .torch import *
  File "/home/andira/anaconda3/lib/python3.7/site-packages/fastai/imports/torch.py", line 1, in <module>
    import torch, torch.nn.functional as …
Run Code Online (Sandbox Code Playgroud)

python pip torch pytorch python-3.7

3
推荐指数
1
解决办法
9272
查看次数

torch 库中的 BatchNorm1d() 方法如何工作?

我正在学习pytorch,我不知道这个问题是否愚蠢,但我找不到解释nn.batchnorm1d的官方网站。我想知道怎么torch.nn.BatchNorm1d(d1)工作?我知道批量归一化就是让一批样本的均值和方差分别为0和1。我想知道是否有 nn.batchnorm2d,如果有,它有什么作用?参数是什么d1

python torch pytorch

3
推荐指数
1
解决办法
4611
查看次数

具有多个值的 Tensor 的 bool 值不明确

我正在编写一个神经网络来进行回归,这是我的代码:

class Model(nn.Module):
    def __init__(self, input_size, hidden_size, num_classes):
        super().__init__()
        self.h1 = nn.Linear(input_size, hidden_size)
        self.h2 = nn.Linear(hidden_size, hidden_size)
        self.h3 = nn.Linear(hidden_size, num_classes)

    def forward(self, x):
        x = self.h1(x)
        x = Fuc.tanh(x)
        x = self.h2(x)
        x = Fuc.relu(x)
        x = self.h3(x)
        return x

model = Model(input_size=input_size, hidden_size=hidden_size, num_classes=num_classes)
opt = optim.Adam(params=model.parameters(), lr=learning_rate)


for epoch in range(1000):
    out = model(data)
    print('target', target)
    print('pred', out)
    loss = torch.nn.MSELoss(out, target)
    print('loss', loss)

    model.zero_grad()
    loss.backward()
    opt.step()
Run Code Online (Sandbox Code Playgroud)

我的输入的形状为 (numberOfSample X 2),输出的格式为 [[2],[3],...],即一个列表列表,其中每个内部列表包含一个数字。

好的,现在我训练神经网络并得到这个错误:

       ...
       [-0.1753],
        [-0.1753],
        [-0.1753]], …
Run Code Online (Sandbox Code Playgroud)

torch pytorch

3
推荐指数
1
解决办法
1119
查看次数

torch.no_grad() 影响模型精度

我收到错误“CUDA 内存不足”,然后我将 torch.no_grad() 函数添加到我的代码中。这会影响我的准确性吗?

for iters in range(args.iterations):

with torch.no_grad():
    encoded, encoder_h_1, encoder_h_2, encoder_h_3 = encoder(
    res, encoder_h_1, encoder_h_2, encoder_h_3)

with torch.no_grad():
    code = binarizer(encoded)

with torch.no_grad():
    output, decoder_h_1, decoder_h_2, decoder_h_3, decoder_h_4 = decoder(
    code, decoder_h_1, decoder_h_2, decoder_h_3, decoder_h_4)

res = res - output.detach()
codes.append(code.data.cpu().numpy())
torch.cuda.empty_cache()
print('Iter: {:02d}; Loss: {:.06f}'.format(iters, res.data.abs().mean()))
Run Code Online (Sandbox Code Playgroud)

python model image-compression torch pytorch

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

如何查看 Torch 的确切安装位置 pip vs conda Torch 安装

在我的机器上,我不能“pip install torch”——我得到了臭名昭著的“单一源外部管理错误”——我无法修复它并使用了anaconda的“conda install torch”。

不过,检查版本很容易 - torch.__version__

但是如何查看它安装在哪里——torch 的主目录?假设我通过 pip 和 conda 安装了两个手电筒——如何知道项目中使用了哪一个?

import torch
print(torch__version__)
Run Code Online (Sandbox Code Playgroud)

python conda torch pytorch

3
推荐指数
1
解决办法
2325
查看次数

运行时错误:操作在 f 字符串语句中没有标识

我正在评估 pytorch 模型。它以以下方式给出结果

results = model(batch)
# results is a list of dictionaries with 'boxes', 'labels' and 'scores' keys and torch tensor values
Run Code Online (Sandbox Code Playgroud)

然后我尝试打印一些值来检查发生了什么

print(
    (
        f"{results[0]['boxes'].shape[0]}\n" # Returns how many boxes there is
        f"{results[0]['scores'].mean()}" # Mean credibility score of the boxes
    )
)
Run Code Online (Sandbox Code Playgroud)

这会导致错误

Exception has occurred: RuntimeError: operation does not have identity

让事情变得更加混乱的是,print有时只会失败。为什么会失败?

python torch f-string torchvision

3
推荐指数
1
解决办法
4055
查看次数