小编adj*_*oun的帖子

了解 PyTorch conv1D 的输入形状?

这似乎是这里的常见问题之一(1,2,3 ) 但我仍在努力定义PyTorch conv1D输入的正确形状

我有长度为 512 的文本序列(每个序列的标记数量),每个标记由长度为 768 的向量表示(嵌入)。我使用的批量大小是 6。

所以我的 conv1D 输入张量的形状为 [6, 512, 768]。

input = torch.randn(6, 512, 768) 
Run Code Online (Sandbox Code Playgroud)

现在,我想使用 PyTorch 的 conv1D 层对内核大小为 2 的序列长度 (512) 进行卷积。

理解1:

我假设“in_channels”是 conv1D 层的嵌入维度。如果是这样,那么 conv1D 层将以这种方式定义,其中

in_channels = embedding dimension (768)
out_channels = 100 (arbitrary number)
kernel = 2

convolution_layer = nn.conv1D(768, 100, 2)
feature_map = convolution_layer(input)
Run Code Online (Sandbox Code Playgroud)

但有了这个假设,我得到以下错误:

RuntimeError: Given groups=1, weight of size 100 768 2, expected input `[4, 512, 768]` to have 768 …
Run Code Online (Sandbox Code Playgroud)

conv-neural-network pytorch

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

PyTorch BERT 类型错误:forward() 得到了意外的关键字参数“标签”

使用 PyTorch 转换器训练 BERT 模型(遵循此处的教程)。

教程中的以下语句

loss = model(b_input_ids, token_type_ids=None, attention_mask=b_input_mask, labels=b_labels)
Run Code Online (Sandbox Code Playgroud)

造成

TypeError: forward() got an unexpected keyword argument 'labels'
Run Code Online (Sandbox Code Playgroud)

这是完整的错误,

TypeError                                 Traceback (most recent call last)
<ipython-input-53-56aa2f57dcaf> in <module>
     26         optimizer.zero_grad()
     27         # Forward pass
---> 28         loss = model(b_input_ids, token_type_ids=None, attention_mask=b_input_mask, labels=b_labels)
     29         train_loss_set.append(loss.item())
     30         # Backward pass

~/anaconda3/envs/systreviewclassifi/lib/python3.6/site-packages/torch/nn/modules/module.py in __call__(self, *input, **kwargs)
    539             result = self._slow_forward(*input, **kwargs)
    540         else:
--> 541             result = self.forward(*input, **kwargs)
    542         for hook in self._forward_hooks.values():
    543             hook_result = hook(self, …
Run Code Online (Sandbox Code Playgroud)

python pytorch bert-language-model huggingface-transformers

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

了解 PyTorch LSTM 的输入形状

这似乎是 PyTorch 中 LSTM 最常见的问题之一,但我仍然无法弄清楚 PyTorch LSTM 的输入形状应该是什么。

即使遵循了几个帖子(123)并尝试了解决方案,它似乎也不起作用。

背景:我已经对一批大小为 12 的文本序列(可变长度)进行了编码,并且使用pad_packed_sequence功能对序列进行了填充和打包。MAX_LEN对于每个序列是 384,序列中的每个标记(或单词)的维度为 768。因此,我的批处理张量可能具有以下形状之一:[12, 384, 768][384, 12, 768]

该批次将是我对 PyTorch rnn 模块(此处为 lstm)的输入。

根据用于PyTorch文档LSTMs,其输入尺寸是(seq_len, batch, input_size)我的理解如下。
seq_len- 每个输入流中的时间步数(特征向量长度)。
batch- 每批输入序列的大小。
input_size- 每个输入标记或时间步长的维度。

lstm = nn.LSTM(input_size=?, hidden_size=?, batch_first=True)

这里的确切值input_sizehidden_size值应该是什么?

python lstm pytorch tensor

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

Lucene使用FSDirectory

我写了一个简单的java程序来创建一个lucene索引,但是我的语法错误了.

我的代码:

static final String INDEX_DIRECTORY = "/home/yuqing/Desktop/index";
Directory index = FSDirectory.open(new File(INDEX_DIRECTORY));
Run Code Online (Sandbox Code Playgroud)

我收到以下错误,

open (java.nio.file.path) in FSDirectory cannot be applied to java.io.file
Run Code Online (Sandbox Code Playgroud)

java lucene

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

在训练我们的 CNN 进行文本分类时如何微调 word2vec?

我有 3 个关于微调词向量的问题。请帮帮我。我会很感激的!提前谢谢了!

  1. 当我训练自己的 CNN 进行文本分类时,我使用 Word2vec 来初始化单词,然后我只是使用这些预先训练好的向量作为我的输入特征来训练 CNN,所以如果我从来没有嵌入层,它肯定不能做任何事情通过反向传播进行微调。我的问题是如果我想做微调,是否意味着创建一个嵌入层?以及如何创建它?

  2. 当我们训练 Word2vec 时,我们使用的是无监督训练,对吗?就我而言,我使用skip-gram 模型来获取我预先训练好的word2vec;但是当我拥有 vec.bin 并在文本分类模型 (CNN) 中使用它作为我的词初始化器时,如果我可以微调 vec.bin 中的词到向量映射,是否意味着我必须拥有与训练 Word2vec 时完全相同的 CNN 网络结构?微调的东西会改变 vec.bin 还是只是微调计算机内存?

  3. skip-gram 模型和 CBOW 模型是否仅用于无监督 Word2vec 训练?或者他们也可以申请其他一般的文本分类任务?Word2vec 无监督训练和监督微调之间的网络有什么不同?

@Franck Dernoncourt 谢谢你提醒我。我在这里很绿,希望能从强大的社区中学到一些东西。有空的时候请看看我的问题,再次感谢!

nlp artificial-intelligence machine-learning deep-learning

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

如何用 2D 掩模掩模 3D 张量并保持原始向量的尺寸?

假设我有一个 3D 张量 A

A = torch.arange(24).view(4, 3, 2)
print(A)
Run Code Online (Sandbox Code Playgroud)

并需要使用 2D 张量对其进行屏蔽

mask = torch.zeros((4, 3), dtype=torch.int64)  # or dtype=torch.ByteTensor
mask[0, 0] = 1
mask[1, 1] = 1
mask[3, 0] = 1
print('Mask: ', mask)
Run Code Online (Sandbox Code Playgroud)

使用 PyTorch 中的 masked_select 功能会导致以下错误。

torch.masked_select(X, (mask == 1))


---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-72-fd6809d2c4cc> in <module>
     12 
     13 # Select based on new mask
---> 14 Y = torch.masked_select(X, (mask == 1))
     15 #Y = X * mask_
     16 print(Y)

RuntimeError: …
Run Code Online (Sandbox Code Playgroud)

pytorch tensor

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

如何在 PyTorch 中将布尔张量转换为整数?

假设,我们有一个张量

t = torch.tensor([True, False, True, False])
Run Code Online (Sandbox Code Playgroud)

我们如何将其转换为具有值的整数张量[1, 0, 1, 0]

int boolean pytorch tensor

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

如何从Java有效地将For-loop中的(700,000行)内容写入文件?

我编写了以下代码,以XML响应的形式获取结果,并将一些内容写入Java的文件中.这是通过向公共数据库接收大约700,000个查询的XML响应来完成的.

但是,在代码可以写入文件之前,它会被代码中随机位置的一些随机异常(来自服务器)停止.我尝试从For-loop本身写入文件,但是无法做到.所以我尝试将收到的响应中的块存储到Java HashMap中,并在一次调用中将HashMap写入文件.但是在代码收到for循环中的所有响应并将它们存储到HashMap之前,它会停止一些异常(可能在第15000次迭代!!).当需要这样的迭代来获取数据时,是否还有其他有效的方法可以用Java写入文件?

我用于此代码的本地文件位于此处.

我的代码是,

import java.io.BufferedReader;              

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.StringWriter;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.XML;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;


public class random {

    static FileWriter fileWriter;
    static PrintWriter …
Run Code Online (Sandbox Code Playgroud)

java performance file-writing

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