标签: torch

在输出和目标标签之间使用 nn.Cross entropy

我用这个代码

训练模型的函数

def train():
  
  model.train()

  total_loss, total_accuracy = 0, 0
  
  # empty list to save model predictions
  total_preds=[]
  
  # iterate over batches
  for step,batch in enumerate(train_dataloader):
    
    # progress update after every 50 batches.
    if step % 50 == 0 and not step == 0:
      print('  Batch {:>5,}  of  {:>5,}.'.format(step, len(train_dataloader)))

    # push the batch to gpu
    #batch = [r for r in batch]
 
    sent_id, mask, labels = batch['input_ids'],batch['attention_mask'],batch['labels']
    print(6)
    print(sent_id)
    print(mask)
    print(labels)
    print(batch['input_ids'].shape)
    print(batch['attention_mask'].shape)
    print(batch['labels'].shape)

    # clear previously calculated gradients …
Run Code Online (Sandbox Code Playgroud)

python neural-network torch cross-entropy bert-language-model

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

拆分火炬数据集而不进行改组

我用来Pytorch运行 Transformer 模型。当我想分割数据(标记化数据)时,我使用以下代码:

train_dataset, test_dataset = torch.utils.data.random_split(
                                                            tokenized_datasets,
                                                            [train_size, test_size])
Run Code Online (Sandbox Code Playgroud)

torch.utils.data.random_split使用洗牌方法,但我不想洗牌。我想按顺序分割它。

有什么建议吗?谢谢

python transformer-model torch pytorch pytorch-dataloader

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

是否有一个 torch 函数可以导出两个张量的并集?

numpy中有一个函数可用于导出两个张量的并集,如下所示:

import torch
import numpy as np
a = torch.tensor([0, 1, 2])
b = torch.tensor([2, 3, 4])
c = np.union1d(a, b) # c = array([0, 1, 2, 3, 4])
c = torch.from_numpy(c) # c = torch.tensor([0, 1, 2, 3, 4])
Run Code Online (Sandbox Code Playgroud)

但是,我正在寻找可以直接在两个张量上使用的torch函数。如果我使用上面的 numpy 函数,我必须将结果从 numpy 转换为 torch,并且还必须使用 cpu,尽管该函数应用于张量。

torch中有没有可以直接在两个张量上使用的联合函数?或者,至少可以使用其他火炬功能简单地实现它吗?

union numpy torch pytorch

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

如何从C读取火炬张量

我必须使用Torch框架训练卷积神经网络,然后在C中编写相同的网络.为此,我必须以某种方式从我的C程序中读取网络的学习参数,但我找不到办法将Torch Tensors转换或写入文件以使其在C中可读.理想情况下,我想将Tensors转换为C中的double数组.

有谁知道这是怎么做到的吗?提前致谢 :)

c lua luajit neural-network torch

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

这个函数如何:input.nn.MSECriterion_updateOutput(self,input,target)工作(在Lua/Torch中)?

我有这个功能:

    function MSECriterion:updateOutput(input, target)
        return input.nn.MSECriterion_updateOutput(self, input, target)
    end
Run Code Online (Sandbox Code Playgroud)

现在,

   input.nn.MSECriterion_updateOutput(self, input, target)
Run Code Online (Sandbox Code Playgroud)

返回一个数字.我不知道它是怎么做到的.我已经在调试器中一步步走了,似乎这只是计算一个没有中间步骤的数字.

 input is a Tensor of size 1 (say, -.234). And the 

 nn.MSECriterion_updateOutput(self, input, target) looks like it is just the function MSECriterion:updateOutput(input, target).
Run Code Online (Sandbox Code Playgroud)

我对如何计算数字感到困惑.

我很困惑为什么甚至允许这样做.参数输入是一个张量,它甚至没有任何名为nn.MSE input.nn.MSECriterion_updateOutput的方法.

lua function lua-table torch

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

如何从python中获取lua/translation中的类类型

我试图在lua中找到类似于类的东西.在python中,我会这样做:

a = {}
type(a)
>>>> dict
Run Code Online (Sandbox Code Playgroud)

所以我在lua中有对象词汇.当我打印对象时,我得到:

print(vocab)
>>> {
3 : 20
o : 72
m : 70
d : 61
( : 9
}
Run Code Online (Sandbox Code Playgroud)

我如何让lua吐出对象,类似于python中的type()? - 它将为您提供对象的类

python lua class torch

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

静态图很快.动态图很慢.有没有具体的基准证明这一点?

我看到了一些关于tensorflow和的基准pytorch.Tensorflow可能更快,但似乎不是更快,甚至有时更慢.

是否有关于静态图和动态图专门测试的基准测试,证明静态图比动态图快得多?

torch tensorflow mxnet pytorch tensorflow-gpu

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

什么是"th","python","python3","java"等...在前面用于运行脚本的命令,叫做?

在Lua with Torch中,您使用"th"来运行Lua脚本.在Python中,您使用"python"或"python3"来运行python脚本.在Java中,您使用"java"来运行java类脚本.

命令前面的这个词是什么,实际上叫做?我试图自己搜索这个名字,但我找不到任何东西.

python java lua torch

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

我的神经网络模型的权重变化不大的原因是什么?

我正在训练一个神经网络模型,我的模型很好地拟合了训练数据。训练损失稳定下降。一切正常。
但是,当我输出模型的权重时,我发现它自随机初始化以来并没有太大变化(我没有使用任何预训练的权重。所有权重在 PyTorch 中默认初始化)。权重的所有维度仅变化约 1%,而训练数据的准确率从 50% 攀升至 90%。什么可以解释这种现象?权重的尺寸是否太高,我需要减小模型的尺寸?或者还有其他可能的解释吗?

我知道这是一个相当广泛的问题,但我认为在这里展示我的模型并对其进行数学分析是不切实际的。所以我只想知道这个问题的一般/常见原因是什么。

python machine-learning neural-network torch

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

我们如何将线性层的输出提供给 PyTorch 中的 Conv2D?

我正在构建一个自动编码器,我需要将图像编码为长度为 100 的潜在表示。我的模型使用以下架构。

        self.conv1 = nn.Conv2d(in_channels = 3, out_channels = 32, kernel_size=3)
        self.conv2 = nn.Conv2d(in_channels=32,out_channels=64,kernel_size=3,stride=2)
        self.conv3 = nn.Conv2d(in_channels=64,out_channels=128,kernel_size=3,stride=2)

        self.linear = nn.Linear(in_features=128*30*30,out_features=100)

        self.conv1_transpose = nn.ConvTranspose2d(in_channels=128,out_channels=64,kernel_size=3,stride=2,output_padding=1)
        self.conv2_transpose = nn.ConvTranspose2d(in_channels=64,out_channels=32,kernel_size=3,stride=2,output_padding=1)
        self.conv3_transpose = nn.ConvTranspose2d(in_channels=32,out_channels=3,kernel_size=3,stride=1)  
Run Code Online (Sandbox Code Playgroud)

有什么方法可以将Linear图层的输出提供给一个Conv2D或一个ConvTranspose2D图层,以便我可以重建我的图像?如果我删除Linear图层,输出将恢复。我想知道如何重建我的图像保留Linear

任何帮助,将不胜感激。谢谢!

python autoencoder torch pytorch torchvision

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