GithubHelp home page GithubHelp logo

zergtant / pytorch-handbook Goto Github PK

View Code? Open in Web Editor NEW
19.6K 528.0 5.4K 146 MB

pytorch handbook是一本开源的书籍,目标是帮助那些希望和使用PyTorch进行深度学习开发和研究的朋友快速入门,其中包含的Pytorch教程全部通过测试保证可以成功运行

Jupyter Notebook 100.00%
pytorch pytorch-tutorials pytorch-handbook deep-learning neural-network machine-learning

pytorch-handbook's Introduction

Hi there 👋

pytorch-handbook's People

Contributors

chibisukedragon avatar clickmouse avatar dawn-david avatar deep-course avatar dongzhixiao avatar fordai avatar freesinger avatar horieyuan avatar ivan-ji avatar jiuyong avatar leikunx avatar littlefis avatar liuwei9 avatar liuyou2015 avatar mage-white avatar muliyangm avatar mumutw avatar sabaizzz avatar showarp avatar siliconx avatar smartlixx avatar syliudf avatar tiiiktak avatar uniartisan avatar xiaoyubing avatar yaleimeng avatar youngforest avatar zergtant avatar zezhishao avatar zhaoqianfeng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pytorch-handbook's Issues

4.2.2-tensorboardx中的图像显示不出来。

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.
    

`
等信息。

runtimeError in 3.1-logistic-regression.ipynb

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 not found了

第二章第一节第四部分,就数据处理那个,网页404了

关于 2.4.1 为什么要用卷积神经网络 参数个数问题

对于计算机视觉来说,每一个图像是由一个个像素点构成,每个像素点有三个通道,分别代表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吗

tensorboard版本

在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的工具。也就是说,给定任一向量 $v=(v_{1};v_{2};\cdots;v_{m})^{T}$ ,计算 $v^{T}\cdot J$ ,如果 $v$ 恰好是标量函数 $l=g(\vec{y})$ 的梯度,也就是说 $v=(\frac{\partial l}{\partial y_{1}};\cdots;\frac{\partial l}{\partial y_{m}})^{T}$,那么根据链式法则,vector-Jacobian product 是 $\vec{x}$$l$ 的梯度:

我觉得那个That is 应该是在给前面的vector-Jacobian product做说明,所以大概是这么翻译?

一般来说,torch.autograd就是用来计算vector-Jacobian product的工具。其中vector-Jacobian product,是指对于给定的任一向量 $v=(v_{1};v_{2};\cdots;v_{m})^{T}$ ,计算出的 $v^{T}\cdot J$ 。如果 $v$ 恰好是标量函数 $l=g(\vec{y})$ 的梯度,也就是说 $v=(\frac{\partial l}{\partial y_{1}};\cdots;\frac{\partial l}{\partial y_{m}})^{T}$,那么根据链式法则,vector-Jacobian product 是 $\vec{x}$$l$ 的梯度:

PyTorch 基础 : 张量部分内容修改的建议

初始化这一块,个人觉得需要添加torch.randn( ),并且比较一下torch.randn( )和torch.rand( )的区别。

使用[0,1]均匀分布随机初始化二维数组

rand = torch.rand(5, 3)
rand
#使用标准正太分布随机初始化二维数组
randn = torch.randn(5, 3)
randn

4.2.2后面网络结构部分运行出错AssertionError: Only output_size=[1, 1] is supported是什么原因呢

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

pytorch 如何使用预训练网络的问题

实际中,经常会出现需要使用之前训练好的模型,去掉后面若干层,然后在模型最后增加一个针对本次任务的 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 这一层有什么快捷的办法吗?

无法import torch

在Prompt里面可以import torch并显示其版本,但是进入Jupyter Notebook的Pytorch for Deeplearning后却报错说No module named 'torch'

RNN报错

在第三章的rnn里,如果使用gpu会报错,因为x_np和y_np没有放到gpu上

1.2 Pytorch环境搭建 给出的命令有误

#默认 使用 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.))。

小白求救,安装pytorch在pycharm里面一直导入错误

在终端里面成功pip安装pytorch后,进python输入import torch验证也是成功的,不会报错。但是到了pycharm里面就死活没法import,已经尝试过更改解释器。谢谢大家,小白刚来啥也不懂,希望大家多多指教。

FastAI 抱团取暖

一句话不通顺

在1.2.1中,下面的这句话中加粗部分不通顺
需要说明的一点是如果使用清华镜像,可以直接添加pytorch源镜像去掉,并且去掉-c pytorch 这样才能使用镜像源。

多余空格

1.1.5再次总结中,第五点“PyTorch作者亲自维护的论坛 供用户交流和求教问题”中间多出一个空格

RNN实例

pytorch1.0.1运行RNN实例:SIN预测COS运行的结果和实例貌似不太一样
1

2.1.1.pytorch-basics-tensor 错字

原文

基本类型

Tensor的基本数据类型有五种:

  • 32位浮点型:torch.FloatTensor。 (默认)
  • 64位整型:torch.LongTensor。
  • 32位整型:torch.IntTensor。
  • 16位整型:torch.ShortTensor。
  • 64位浮点型:torch.DoubleTensor。

除以上数字类型外,还有
byte和chart型

最后一段有误, 应为byte和char型

将数据转移到GPU出错

generic_type: cannot initialize type "_CudaDeviceProperties": an object with that name is already defined

pytorch for deeplearning环境不可用

根据手册安装好相应固件后,在Jupter Notebook上无法运行pytorch,python3可以使用,但是使用pytorch后编辑页面显示“Dead kermel”,Jupter Notebook显示“ImportError: DLL load failed: 找不到指定的模块”,请问这是怎么回事呢

3_neural_networks_tutorial中nn.Linear的输入特征数量

如下代码,其中 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”。

Little Mistake in 3.1-logistic-regression.ipynb

net=LR()
criterion=nn.CrossEntropyLoss() # 使用CrossEntropyLoss损失
optm=torch.optim.Adam(net.parameters()) # Adam优化
epochs=1000 # 训练10000

应该是
epochs=1000 # 训练1000

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.