我尝试在我的 google colab 笔记本上运行:
!pip install -Uqq fastbook
import fastbook
Run Code Online (Sandbox Code Playgroud)
正如 FastAI 书第 2 章中所写的那样。但无论是书还是谷歌上的任何地方都没有解释什么是这种自由。令人惊讶的是,它的页面没有包含任何有关 fastbook 功能的解释 - 仅涉及一些深度学习课程。
所以,
另外,当我跑步时:
fastbook.setup_book()
Run Code Online (Sandbox Code Playgroud)
ty。
当我尝试运行以下简单的行时,我遇到一个非常奇怪的错误:
\na = torch.Tensor([0,0,0],dtype = torch.int64)\n\nTypeError: new() received an invalid combination of arguments - got (list, dtype=torch.dtype), but expected one of:\n * (*, torch.device device)\n didn't match because some of the keywords were incorrect: dtype\n * (torch.Storage storage)\n * (Tensor other)\n * (tuple of ints size, *, torch.device device)\n * (object data, *, torch.device device)\n
Run Code Online (Sandbox Code Playgroud)\n而如果我们查看官方文档
\ntorch.tensor(data, dtype=None, device=None, requires_grad=False, pin_memory=False) \xe2\x86\x92 Tensor\n
Run Code Online (Sandbox Code Playgroud)\n\n\n …参数
\ndata (array_like) \xe2\x80\x93 张量的初始数据。可以是列表、元组、NumPy ndarray、标量和其他类型。
\ndtype(torch.dtype,可选)\xe2\x80\x93 返回张量所需的数据类型。默认值:如果无,则从数据推断数据类型。
\n
我有一组张量正在填充,pad_sequence
但我需要保证它们的固定长度。我现在不能这样做,因为pad_sequence
会将较短的张量延伸到最长的张量,如果最长的张量没有达到我想要的长度,我就完蛋了。我认为解决方案可以是向其中一个张量添加零以填充到我想要的长度,这样填充的结果将具有我想要的长度。我不知道该怎么做
假设我有一个形状为torch.Size([44])
且所需长度为 50 的张量,如何向其添加零以达到 的形状torch.Size([50])
?无论初始张量形状如何,都需要保持这一点。
本教程演示如何为 PyTorch 制作基于 C++/CUDA 的 Python 扩展。但由于……原因……我的用例比这更复杂,并且不完全适合本教程描述的 Python setuptools 框架。
有没有办法使用cmake编译扩展PyTorch的Python库?
我想要从 Huggingface 下载的模型的摘要PyTorch
。
我在这里做错了什么吗?
from torchinfo import summary
from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=2)
summary(model, input_size=(16, 512))
Run Code Online (Sandbox Code Playgroud)
给出错误:
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
/usr/local/lib/python3.7/dist-packages/torchinfo/torchinfo.py in forward_pass(model, x, batch_dim, cache_forward_pass, device, **kwargs)
257 if isinstance(x, (list, tuple)):
--> 258 _ = model.to(device)(*x, **kwargs)
259 elif isinstance(x, dict):
11 frames
/usr/local/lib/python3.7/dist-packages/torch/nn/modules/module.py in _call_impl(self, *input, **kwargs)
1050 or _global_forward_hooks or _global_forward_pre_hooks):
-> 1051 return forward_call(*input, **kwargs)
1052 # Do not call functions when jit is used
/usr/local/lib/python3.7/dist-packages/transformers/models/bert/modeling_bert.py …
Run Code Online (Sandbox Code Playgroud) 假设我有以下张量:y = torch.randint(0, 3, (10,))
。你会如何计算其中的 0、1 和 2?
我能想到的唯一方法是使用,collections.Counter(y)
但想知道是否有更“pytorch”的方法来做到这一点。例如,一个用例是构建用于预测的混淆矩阵。
我正在尝试使用 pytorch profiler 来分析我的模型。我使用下面的代码来分析
with profile(activities=[ProfilerActivity.CPU, ProfilerActivity.CUDA], record_shapes=True) as prof:
with record_function("model_inference"):
output_batch = self.model(input_batch)
print(prof.key_averages().table(sort_by="cpu_time_total", row_limit=10))
Run Code Online (Sandbox Code Playgroud)
分析器输出如下
------------------------------------------------------- ------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------
Name Self CPU % Self CPU CPU total % CPU total CPU time avg Self CUDA Self CUDA % CUDA total CUDA time avg # of Calls
------------------------------------------------------- ------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------
model_inference 3.17% 83.011ms 63.97% 1.675s 1.675s 0.000us 0.00% 373.844ms 373.844ms 1
aten::copy_ 0.24% …
Run Code Online (Sandbox Code Playgroud) 我的输入图像的大小是 68 x 224 x 3 (HxWxC),第一Conv2d
层定义为
conv1 = torch.nn.Conv2d(3, 16, stride=4, kernel_size=(9,9))
。
为什么输出特征体的尺寸是16 x 15 x 54?我知道有16个过滤器,所以前面有16,但是如果我用来[(W\xe2\x88\x92K+2P)/S]+1
计算维度,维度是不可整除的。
有人可以解释一下吗?
\n我还没有找到太多有关 PyTorch 的 SHAP 值的示例。我使用了两种技术来生成 SHAP 值,但是它们的结果似乎彼此不一致。
import torch
from torch.autograd import Variable
import shap
import numpy
import pandas
torch.set_grad_enabled(False)
# Get features
train_features_df = ... # pandas dataframe
test_features_df = ... # pandas dataframe
# Define function to wrap model to transform data to tensor
f = lambda x: model_list[0]( Variable( torch.from_numpy(x) ) ).detach().numpy()
# Convert my pandas dataframe to numpy
data = test_features_df.to_numpy(dtype=np.float32)
# The explainer doesn't like tensors, hence the f function
explainer …
Run Code Online (Sandbox Code Playgroud) PyTorch 能够保存和加载优化器的状态。PyTorch 教程中显示了一个示例。我目前只是保存和加载模型状态,而不是优化器。那么,除了不必记住学习率等优化器参数之外,保存和加载优化器状态还有什么意义呢?优化器状态包含什么?