问题标签 [torchtext]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 矩阵乘法维度令人困惑
nn.Linear(vocab_size, num_labels)
表示矩阵形状为num_labels x vocab_size
bow_vector 尺寸是1 x vocab_size
,nn.linear 的预期输入是batch_size x features
现在,我们将num_labels x vocab_size
矩阵乘以1 x vocab_size
。因此,维度与矩阵乘法不匹配。我在这里想念什么?:思维:
https://discuss.pytorch.org/t/matrix-multiplication-dimentions-confusing/79376?u=abhigenie92
pytorch - 在 torchtext 中读取 csv.gz 文件
Pandas 的 read_csv 也适用于 csv.gz。
有没有办法用 PyTorch 实现类似的效果?https://torchtext.readthedocs.io/en/latest/data.html#torchtext.data.Dataset似乎没有这样的选择。
pytorch - 如何从输入 ID 中获取填充掩码?
考虑如下所示的一批 4 个预处理句子(标记化、数字化和填充):
令牌的0
状态。[PAD]
因此,生成与在位置分配零并将一个分配给其他输入数据(句子标记)padding masking
相同形状的张量的有效方法是什么?batch
[PAD]
在上面的示例中,它将类似于:
pytorch - 使用 BERT 进行序列标记
我正在使用由嵌入层和 LSTM 组成的模型在 pytorch + torchtext 中执行序列标记。我已经标记了这些句子。
如果我使用自训练或其他预训练的词嵌入向量,这很简单。
但是,如果我使用 Huggingface 转换器BertTokenizer.from_pretrained
,并且分别在句子的开头和结尾添加了BertModel.from_pretrained
一个'[CLS]'
和标记。'[SEP]'
所以模型的输出变成了一个比标签/目标序列长两个元素的序列。
我不确定的是:
- 是否需要这两个标签才能
BertModel
“正确”嵌入句子的每个标记? - 如果需要它们,我可以在 BERT 嵌入层之后、LSTM 输入之前将它们取出,以便输出中的长度正确吗?
python - Pytorch 和 Keras 实现在文本分类中的巨大性能差异
我已经在 Keras 和 Pytorch 中实现了 CNN,用于多标签文本分类任务。两种实现以两种截然不同的表现结束。带有 Keras 的 CNN 明显优于带有 Pytorch 的 CNN。两者都使用内核大小为 4 的一层 CNN。
Pytorch 版本的微 F1 得分为 0.023,宏 F1 得分为 0.47。该模型如下图所示(更多细节在 colab notebook 中):
Keras 版本的微 F1 得分为 0.70,宏 F1 得分为 0.56。该模型如下图所示(更多细节在 colab notebook 中):
我认为我的 Pytorch 实现有问题。任何评论表示赞赏。我为 Pytorch 和 Keras 的完整实现创建了一个 colab notebook。随意复制并运行它。请赐教我在 Pytorch 实现中做错的任何事情。谢谢。
deep-learning - 带有torchtext的Pytorch LSTM的输入尺寸有问题
问题
我正在尝试使用 LSTM 构建文本分类器网络。我得到的错误是:
细节
数据是json,看起来像这样:
我torchtext
用来加载数据。
我的 LSTM 看起来像这样
我最终得到了以下尺寸inputs
和labels
我初始化的隐藏张量看起来像:
问题
我试图了解每个步骤的尺寸应该是多少。隐藏维度应该初始化为 (4, 600, 256) 还是 (4, 64, 256)?
machine-learning - Vocab 和 Integer(一个热门)表示是如何存储的,('string', int)元组在 torchtext.vocab() 中的含义是什么?
我正在尝试训练RNN
二进制分类。我的词汇由 1000000 个单词组成,请找到以下输出...
text_field = torchtext.data.Field(tokenize=word_tokenize)
文档说:
我无法理解。
有人可以通过给出每一个的直觉来解释这些是什么吗?
例如,如果the
由 表示4
,那么是否意味着如果一个句子包含单词the
,
- 位置 4 会是 1 吗?或者
- 它会在位置 464796 处为 1 还是
- 464796 的位置会是 4 吗?
当有多个时会发生什么the
?
python - 修剪模型不会提高推理速度或减小模型大小
我正在尝试在 PyTorch 中修剪我的模型torch.nn.utils.prune
,它提供 2 个张量,
- 一个是原始重量和
- 另一个是包含 0 和 1 的掩码,可帮助我们关闭网络中的某些连接。
我已经尝试了这两种解决方案,但都没有提高推理速度:
- 使用剪枝后的网络来推断哪个会先关闭一些与掩码的连接,然后再运行推断。
- 使用掩码将原始权重归零,然后从 state_dict 中删除掩码以进行推断。
有没有办法通过模型张量和掩码来提高速度?与 0 的非零浮点数相乘不会比将 2 个浮点数相乘更快吗?
这是我的修剪功能和修剪速度计算过程:
测试推理速度第一种情况:
测试推理速度第二种情况:
更新
我发现torch有一个稀疏模块,如果我们修剪足够的参数,它可以减少内存使用,但它还不支持nn.Module,只有Tensor对象。这里有一些有用的链接:
https ://github.com/pytorch/pytorch/issues/36214#issuecomment-619586452
https://pytorch.org/docs/stable/sparse.html
pytorch - 使用 torchtext 微调嵌入 - nn.Embedding 与 nn.Embedding.from_pretrained
我一直在使用预训练嵌入(Glove),并希望对这些进行微调。我目前使用这样的嵌入:
我是否应该简单地设置 requires_grad=True 以允许训练嵌入?或者我应该做这样的事情
这些是否等效,我是否有办法检查嵌入是否得到训练?
amazon-web-services - Amazon sagemaker 生命周期配置不起作用
我在 Amazon sagemaker 中有以下生命周期配置文件
但是,当我尝试在 pytorch_conda_p36 虚拟环境中的 jupyter 笔记本上导入 torchtext 时,我得到一个找不到模块的错误
这是我的代码
我得到的错误如下