zergtant / pytorch-handbook Goto Github PK
View Code? Open in Web Editor NEWpytorch handbook是一本开源的书籍,目标是帮助那些希望和使用PyTorch进行深度学习开发和研究的朋友快速入门,其中包含的Pytorch教程全部通过测试保证可以成功运行
pytorch handbook是一本开源的书籍,目标是帮助那些希望和使用PyTorch进行深度学习开发和研究的朋友快速入门,其中包含的Pytorch教程全部通过测试保证可以成功运行
4.2.2-tensorboardx中的图像显示不出来。
显示
`No image data was found.
Probable causes:
You haven’t written any image data to your event files.
TensorBoard can’t find your event files.
`
等信息。
强迫症患者,主要是由于PyChram中报红
官方中文手册中https://pytorch-cn.readthedocs.io/zh/latest/package_references/torch/
没有找到对应函数实例,个人建议:
是否应该这样设置
x = x.new_ones([5, 3], dtype=torch.double)
y=torch.from_numpy(train_lab).long()
y_hat=net(x)
loss=criterion(y_hat,y) # 计算损失
运行时出现 RuntimeError: multi-target not supported at...
CrossEntropy其标签必须为0~n-1,而且必须为1维的,如果设置标签为[nx1]的,则会出现以上错误。
y应该改为 y.squeeze_();
第二章第一节第四部分,就数据处理那个,网页404了
对于计算机视觉来说,每一个图像是由一个个像素点构成,每个像素点有三个通道,分别代表RGB三种颜色(不计算透明度),我们以手写识别的数据你MNIST举例,每个图像的是一个长宽均为28,channel为1的单色图像,如果使用全连接的网络结构,即,网络中的神经与相邻层上的每个神经元均连接,那就意味着我们的网络有28 28 =784个神经元(RGB3色的话还要3),hidden层如果使用了15个神经元,需要的参数个数(w和b)就有:28 28 15 * 10 + 15 + 10=117625个,这个数量级到现在为止也是一个很恐怖的数量级,一次反向传播计算量都是巨大的,这还展示一个单色的28像素大小的图片,如果我们使用更大的像素,计算量可想而知。
需要参数的个数28 28 15 * 10 + 15 + 10=117625,这个是怎么算的,为什么要乘以10,不应该是282815+15*10吗
在4.2.2里我使用的是tensorboard=1.13.1,其中SummaryWriter的参数名不再是log_dir而是logdir,希望作者可以在之后的教程里加上代码运行需求库的版本
出自第一章的2_autograd_tutorial.ipynb
原文如下:
Generally speaking, torch.autograd is an engine for computing vector-Jacobian product. That is, given any vector v=(v1v2⋯vm)T, compute the product vT⋅J. If v happens to be the gradient of a scalar function l=g(y⃗ ), that is, v=(∂l∂y1⋯∂l∂ym)T, then by the chain rule, the vector-Jacobian product would be the gradient of l with respect to x⃗ :
目前的翻译如下:
一般来说,torch.autograd就是用来计算vector-Jacobian product的工具。也就是说,给定任一向量
我觉得那个That is 应该是在给前面的vector-Jacobian product做说明,所以大概是这么翻译?
一般来说,torch.autograd
就是用来计算vector-Jacobian product的工具。其中vector-Jacobian product,是指对于给定的任一向量
初始化这一块,个人觉得需要添加torch.randn( ),并且比较一下torch.randn( )和torch.rand( )的区别。
rand = torch.rand(5, 3)
rand
#使用标准正太分布随机初始化二维数组
randn = torch.randn(5, 3)
randn
self.conv2=nn.Conv2d(10,20,3) # 128, 10x10
应该是#20, 10x10吧
could you tell me the English version of ipynb, I would like to read both, thx!~
原文:5.1.4 Kaggle薅羊毛指南“这对于入门学习来说已经沟通了”。
“已经沟通了”可能需要修改为“已经够了”
torch1.0和torchvision0.2.1版本
Traceback (most recent call last):
File "C:/Users/hufan/PycharmProjects/pytorch-handbook-master/chapter4/ss.py", line 29, in
writer.add_graph(vgg16, (vgg16_input,))
File "C:\Users\hufan\Anaconda3\Lib\site-packages\tensorboardX\writer.py", line 566, in add_graph
self.file_writer.add_graph(graph(model, input_to_model, verbose))
File "C:\Users\hufan\Anaconda3\Lib\site-packages\tensorboardX\pytorch_graph.py", line 235, in graph
_optimize_trace(trace, torch.onnx.utils.OperatorExportTypes.ONNX)
File "C:\Users\hufan\Anaconda3\Lib\site-packages\tensorboardX\pytorch_graph.py", line 175, in _optimize_trace
trace.set_graph(_optimize_graph(trace.graph(), operator_export_type))
File "C:\Users\hufan\Anaconda3\Lib\site-packages\tensorboardX\pytorch_graph.py", line 206, in _optimize_graph
graph = torch._C.jit_pass_onnx(graph, operator_export_type)
File "C:\Users\hufan\Anaconda3\Lib\site-packages\torch\onnx_init.py", line 52, in _run_symbolic_function
return utils._run_symbolic_function(*args, **kwargs)
File "C:\Users\hufan\Anaconda3\Lib\site-packages\torch\onnx\utils.py", line 504, in _run_symbolic_function
return fn(g, *inputs, **attrs)
File "C:\Users\hufan\Anaconda3\Lib\site-packages\torch\onnx\symbolic.py", line 89, in wrapper
return fn(g, *args)
File "C:\Users\hufan\Anaconda3\Lib\site-packages\torch\onnx\symbolic.py", line 600, in adaptive_avg_pool2d
assert output_size == [1, 1], "Only output_size=[1, 1] is supported"
AssertionError: Only output_size=[1, 1] is supported
实际中,经常会出现需要使用之前训练好的模型,去掉后面若干层,然后在模型最后增加一个针对本次任务的 head 的情况。
上述操作,尤其是去掉后面若干层,似乎在 pytorch 中比较麻烦。因为pytorch 好像不能取其前向反馈(forward)中的部分操作。
假设定义一个网络(卷积参数瞎写的):
class Test(nn.Module):
def __init__(self):
super(Test, self).__init__()
self.a = nn.Conv2d(2, 3, 3)
self.b = nn.Conv2d(3, 4, 3)
def forward(self, x):
# x = self.b(x)
# x = self.a(x)
x = F.max_pool2d(self.a(x),2)
x = self.b(x)
return x
这个网络里有两个模块a和 b。在 forward 中我可以先 a 再 b,也可以先 b 再 a,还可以在中间插入 relu, maxpool2d 等操作。
但是在网络外部,一般都是通过 model.children()来获取网络情况。不管我 forward 函数怎么改,通过model.children()返回的结果都是一样的:
Test(
(a): Conv2d(2, 3, kernel_size=(3, 3), stride=(1, 1))
(b): Conv2d(3, 4, kernel_size=(3, 3), stride=(1, 1))
)
所以我想知道 pytorch 到底应该如何取某一个模型的部分前向操作呢?
比如上面的例子,forward 中先过 a,再过maxpool,再过 b。
我想去掉 b 这一层有什么快捷的办法吗?
在Prompt里面可以import torch并显示其版本,但是进入Jupyter Notebook的Pytorch for Deeplearning后却报错说No module named 'torch'
How can I install package in 4.2.3 like guided_backprop and gradcam
在第三章的rnn里,如果使用gpu会报错,因为x_np和y_np没有放到gpu上
trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transform)
可能是这行代码下载的速度太慢了。download改成False了也还是不行。
#默认 使用 cuda10.1
pip3 install torch===1.3.0 torchvision===0.4.1 -f https://download.pytorch.org/whl/torch_stable.
此句话的句号后面少了html
故应为
pip3 install torch===1.3.0 torchvision===0.4.1 -f https://download.pytorch.org/whl/torch_stable.html
2_autograd_tutorial.ipynb 文件里,梯度部分
原文:反向传播 因为 out是一个纯量(scalar),out.backward() 等于out.backward(torch.tensor(1))。
运行时out.backward(torch.tensor(1))报错:RuntimeError: Expected is Floating Type (grads[i].type().scalarType()) to be true, but got false.
同时,scalar的翻译个人认为最好是标量。
改为:反向传播 因为 out是一个标量(scalar),out.backward() 等于out.backward(torch.tensor(1.))。
在终端里面成功pip安装pytorch后,进python输入import torch验证也是成功的,不会报错。但是到了pycharm里面就死活没法import,已经尝试过更改解释器。谢谢大家,小白刚来啥也不懂,希望大家多多指教。
将梯度反向传播会网络的参数;
将梯度反向传播回网络的参数;
关于fastai/course-v3和NLA的个人笔记,断断续续的学习笔记
关于 PyTorch 的书籍,可以帮忙
在1.2.1中,下面的这句话中加粗部分不通顺
需要说明的一点是如果使用清华镜像,可以直接添加pytorch源镜像去掉,并且去掉-c pytorch 这样才能使用镜像源。
torch.rand是[0-1]之间的均匀分布,不是正态分布
1.1.5再次总结中,第五点“PyTorch作者亲自维护的论坛 供用户交流和求教问题”中间多出一个空格
我尝试自己用gitbook去转化,但是gtibook似乎识别不了 .ipynb
哪位好人给个PDF版本
原文
基本类型
Tensor的基本数据类型有五种:
- 32位浮点型:torch.FloatTensor。 (默认)
- 64位整型:torch.LongTensor。
- 32位整型:torch.IntTensor。
- 16位整型:torch.ShortTensor。
- 64位浮点型:torch.DoubleTensor。
除以上数字类型外,还有
byte和chart型
最后一段有误, 应为byte和char型
generic_type: cannot initialize type "_CudaDeviceProperties": an object with that name is already defined
书中第五章,第六章,第七章仅仅是列出标题但未给出内容,请教这是后续会更新吗,还是内容在另外的地方
pytorch-handbook/chapter1/5_data_parallel_tutorial.ipynb
在【数据并行(选读)】这一节的【In [6]】中,第三行至第五行的代码前面只有2个空格
2.1.2-pytorch-basics-autograd.ipynb
最后一行执行a.grad之后梯度为1,应将原来的“梯度因为1”,改为“梯度应为1”,或者“梯度为1”.
根据手册安装好相应固件后,在Jupter Notebook上无法运行pytorch,python3可以使用,但是使用pytorch后编辑页面显示“Dead kermel”,Jupter Notebook显示“ImportError: DLL load failed: 找不到指定的模块”,请问这是怎么回事呢
如下代码,其中 self.fc1 = nn.Linear(16 * 5 * 5, 120),不明白,Linear的输入特数量应该是通道的数量乘上图片的大小,即163232,与filter无关吧?
`
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
# 1 input image channel, 6 output channels, 5x5 square convolution
# kernel
self.conv1 = nn.Conv2d(1, 6, 5)
self.conv2 = nn.Conv2d(6, 16, 5)
# an affine operation: y = Wx + b
self.fc1 = nn.Linear(16 * 5 * 5, 120)
self.fc2 = nn.Linear(120, 84)
self.fc3 = nn.Linear(84, 10)
`
在2.5-rnn.ipynb文件中的 ln[4] 中h0应该为h_0吧?
编辑错误:在第二章第五节《循环神经网络》内2.5.2 RNN的网络结构及原理这一模块中,介绍RNN时,pytorch中的m.RNN类,其构造函数的第一个参数应该为“input_size”而不是“nput_size”。
第二段中的第二行圆写成了园
net=LR()
criterion=nn.CrossEntropyLoss() # 使用CrossEntropyLoss损失
optm=torch.optim.Adam(net.parameters()) # Adam优化
epochs=1000 # 训练10000次
应该是
epochs=1000 # 训练1000次
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.