活动介绍
file-type

PyTorch 0.3 & 0.4版本官方中文文档详解

下载需积分: 50 | 4.36MB | 更新于2025-02-12 | 178 浏览量 | 16 下载量 举报 1 收藏
download 立即下载
PyTorch是一个由Facebook人工智能研究团队开发的开源机器学习库,它用于计算机视觉和自然语言处理等领域的深度学习。PyTorch 0.3和0.4版本是在2018年期间发布的两个重要版本,这两个版本都对PyTorch的API进行了更新,并对库的内部结构进行了优化。 ### 标题知识点说明: 1. **PyTorch简介** - **机器学习库**:PyTorch是一个基于Python的开源机器学习库,主要用于深度学习研究和应用。 - **动态计算图**:PyTorch的一个显著特点是使用动态计算图(也称为define-by-run),这种机制允许模型的图结构在运行时动态定义,与TensorFlow等静态图系统相对比。 - **社区支持**:作为GitHub上最受欢迎的开源项目之一,PyTorch拥有活跃的社区和大量的资源,用户可以方便地获取帮助和最新的研究成果。 2. **版本重要性** - **0.3版本的特性**:在这个版本中PyTorch在性能和API稳定方面进行了大量工作,强化了分布式训练、移动部署等特性。 - **0.4版本的特性**:PyTorch 0.4版本引入了多线程前置、即时执行(JIT)等新特性,使得模型更容易部署到生产环境中,提高了框架的易用性。 ### 描述知识点说明: 描述中没有提供更多细节,所以无法单独形成知识点。不过可以补充标题中未提及的内容: - **环境部署**:PyTorch支持多种操作系统,包括Windows、Linux和MacOS,并且可以通过Anaconda、pip等常见的包管理工具进行安装。 - **易用性**:PyTorch的设计哲学之一就是易用性和直观性,它允许研究人员和开发者快速实现复杂的神经网络结构。 ### 标签知识点说明: 1. **PyTorch 0.3和0.4版本的区别** - **0.3版本到0.4版本的改进**:可以列举两个版本间的变更点,包括但不限于性能提升、API变动、新增功能等。 - **向前兼容性**:尽管0.3和0.4之间存在差异,但是社区通常会确保尽可能向前兼容,以减少升级带来的困扰。 2. **中文文档的意义** - **社区贡献**:中文文档的出现,标志着PyTorch社区对非英语母语用户的关怀和支持,为中文用户提供学习和使用PyTorch的便利。 - **学习资源**:对于初学者来说,良好的文档是学习新工具的重要资源。中文文档降低了语言障碍,让更多人能够接触到深度学习的实践。 ### 压缩包子文件的文件名称列表知识点说明: 1. **样式文件(stylesheet.css和page_styles.css)** - **样式定义**:在PyTorch的官方文档或任何网页项目中,样式文件用于定义网页的外观和布局。这可能包括字体、颜色、间距和导航栏等元素的样式。 - **响应式设计**:样式文件可能也包含使文档适应不同屏幕尺寸和设备的响应式设计代码,以便用户可以更好地在移动设备或平板电脑上浏览文档。 2. **HTML文件(10.html、16.html、17.html、11.html、19.html、23.html、30.html、18.html)** - **内容组织**:这些HTML文件代表了PyTorch中文文档的不同部分,可能是按照功能或主题进行组织的。例如,10.html可能包含快速开始指南,而16.html可能涉及到特定的功能模块,如自动微分机制。 - **用户交互**:作为网页文件,它们能够为用户提供丰富的交互体验,例如表格、图片、视频教程和代码示例,这些都有助于用户更直观地理解PyTorch的操作和实现。 总结而言,PyTorch 0.3和0.4版本的发布,标志着该框架在深度学习领域的持续进步和优化。新版本的引入了一系列改进,如性能增强、分布式计算支持和JIT编译器,这些改进让PyTorch成为更为成熟的深度学习工具。同时,中文文档的出现不仅方便了中文用户,也反映了PyTorch对全球社区的承诺。文件列表中的样式和HTML文件则是PyTorch文档的组成部分,它们通过统一的视觉风格和内容组织,使得学习者能够更加便捷地访问和理解PyTorch文档。

相关推荐

filetype

其中P PP为真实值,Q QQ为预测值。2、计算交叉熵的步骤:1)步骤说明:①将predict_scores进行softmax运算,将运算结果记为pred_scores_soft;②将pred_scores_soft进行log运算,将运算结果记为pred_scores_soft_log;③将pred_scores_soft_log与真实值进行计算处理。思路即:s c o r e s → s o f t m a x → l o g → c o m p u t e scores\to softmax\to log\to computescores→softmax→log→compute2)举一个例子对计算进行说明:P 1 = [ 1 0 0 0 0 ] P_1=[10000][10000]P 1​ =[ 1​ 0​ 0​ 0​ 0​ ]Q 1 = [ 0.4 0.3 0.05 0.05 0.2 ] Q_1=[0.40.30.050.050.2][0.40.30.050.050.2]Q 1​ =[ 0.4​ 0.3​ 0.05​ 0.05​ 0.2​ ]H ( p , q ) = − ∑ i P ( i ) log ⁡ Q ( i ) = − ( 1 ∗ l o g 0.4 + 0 ∗ l o g 0.3 + 0 ∗ l o g 0.05 + 0 ∗ l o g 0.05 + 0 ∗ l o g 0.2 ) = − l o g 0.4 ≈ 0.916 H\left( {p,q} \right) = - \sum\limits_i {P\left( i \right)\log Q\left( i \right)}=-(1*log0.4+0*log0.3+0*log0.05+0*log0.05+0*log0.2) \\=-log0.4 \approx 0.916H(p,q)=− i∑​ P(i)logQ(i)=−(1∗log0.4+0∗log0.3+0∗log0.05+0∗log0.05+0∗log0.2)=−log0.4≈0.916如果Q 2 = [ 0.98 0.01 0 0 0.01 ] Q_2=[0.980.01000.01][0.980.01000.01]Q 2​ =[ 0.98​ 0.01​ 0​ 0​ 0.01​ ]则H ( p , q ) = − ∑ i P ( i ) log ⁡ Q ( i ) = − ( 1 ∗ l o g 0.98 + 0 ∗ l o g 0.01 + 0 ∗ l o g 0.05 + 0 ∗ l o g 0 + 0 ∗ l o g 0.01 ) = − l o g 0.98 ≈ 0.02 H\left( {p,q} \right) = - \sum\limits_i {P\left( i \right)\log Q\left( i \right)}=-(1*log0.98+0*log0.01+0*log0.05+0*log0+0*log0.01) \\=-log0.98 \approx 0.02H(p,q)=− i∑​ P(i)logQ(i)=−(1∗log0.98+0∗log0.01+0∗log0.05+0∗log0+0∗log0.01)=−log0.98≈0.02由H ( p , q ) H(p,q)H(p,q)的计算结果和直观地观察Q 1 Q_1Q 1​ 和Q 2 Q_2Q 2​ 与P 1 P_1P 1​ 的相似度,均可看出Q 2 Q_2Q 2​ 比Q 1 Q_1Q 1​ 更近似于P 1 P_1P 1​ 。二、官方文档的说明在PyTorch的官方中文文档中F.cross_entropy()的记录如下:torch.nn.functional.cross_entropy(input, target, weight=None, size_average=True)1该函数使用了 log_softmax 和 nll_loss,详细请看CrossEntropyLoss常用参数:参数名 shape 注input (N,C) C是类别的个数target N 0 <= targets[i] <= C-1三、自己的困惑在官方文档说明中,对于target参数的说明为,torch.shape为torch.Size([N]),0 <= targets[i] <= C-1。我的困惑是:网络计算输出并送入函数中的input的torch.shape为torch.Size([N,C]),它的torch.shape并不会因为softmax和log的操作而改变,但是target的torch.shape为torch.Size([N]),是一个标量而不是一个矩阵,那么如何按照上面的例子中的运算方法进行交叉熵的计算?例如:import torchimport torch.nn.functional as Fpred_score = torch.tensor([[13., 3., 2., 5., 1.], [1., 8., 20., 2., 3.], [1., 14., 3., 5., 3.]])print(pred_score)pred_score_soft = F.softmax(pred_score, dim=1)print(pred_score_soft)pred_score_soft_log = pred_score_soft.log()print(pred_score_soft_log)1234567891011它的结果为:tensor([[13., 3., 2., 5., 1.], [ 1., 8., 20., 2., 3.], [ 1., 14., 3., 5., 3.]])tensor([[9.9960e-01, 4.5382e-05, 1.6695e-05, 3.3533e-04, 6.1417e-06], [5.6028e-09, 6.1442e-06, 9.9999e-01, 1.5230e-08, 4.1399e-08], [2.2600e-06, 9.9984e-01, 1.6699e-05, 1.2339e-04, 1.6699e-05]])tensor([[-4.0366e-04, -1.0000e+01, -1.1000e+01, -8.0004e+00, -1.2000e+01], [-1.9000e+01, -1.2000e+01, -6.1989e-06, -1.8000e+01, -1.7000e+01], [-1.3000e+01, -1.5904e-04, -1.1000e+01, -9.0002e+00, -1.1000e+01]])123456789如何与一个标量target进行计算?四、分析F.Cross_entropy(input, target)函数中包含了s o f t m a x softmaxsoftmax和l o g loglog的操作,即网络计算送入的input参数不需要进行这两个操作。例如在分类问题中,input表示为一个torch.Size([N, C])的矩阵,其中,N NN为样本的个数,C CC是类别的个数,input[i][j]可以理解为第i ii个样本的类别为j jj的Scores,Scores值越大,类别为j jj的可能性越高,就像在代码块中所体现的那样。同时,一般我们将分类问题的结果作为lable表示时使用one-hot embedding,例如在手写数字识别的分类问题中,数字0的表示为[ 1 0 0 0 0 0 0 0 0 0 ][1000000000][1000000000][ 1​ 0​ 0​ 0​ 0​ 0​ 0​ 0​ 0​ 0​ ]数字3的表示为[ 0 0 0 1 0 0 0 0 0 0 ][0001000000][0001000000][ 0​ 0​ 0​ 1​ 0​ 0​ 0​ 0​ 0​ 0​ ]在手写数字识别的问题中,我们计算l o s s lossloss的方法为l o s s = ( y − y ^ ) 2 loss=(y-\hat y)^2loss=(y− y^​ ) 2 ,即求y yy的embedding的矩阵减去pred_probability矩阵的结果矩阵的范数。但是在这里,交叉熵的计算公式为H ( p , q ) = − ∑ i P ( i ) log ⁡ Q ( i ) H\left( {p,q} \right) = - \sum\limits_i {P\left( i \right)\log Q\left( i \right)}H(p,q)=− i∑​ P(i)logQ(i)其中P PP为真实值概率矩阵,Q QQ为预测值概率矩阵。那么如果P PP使用one-hot embedding的话,只有在i ii为正确分类时P ( i ) P(i)P(i)才等于1 11,否则,P ( i ) P(i)P(i)等于0。例如在手写数字识别中,数字3的one-hot表示为[ 0 0 0 1 0 0 0 0 0 0 ][0001000000][0001000000][ 0​ 0​ 0​ 1​ 0​ 0​ 0​ 0​ 0​ 0​ ]对于交叉熵来说,H ( p , q ) = − ∑ i P ( i ) l o g Q ( i ) = − P ( 3 ) l o g Q ( 3 ) = − l o g Q ( 3 ) H(p,q)=- \sum\limits_iP(i)logQ(i)=-P(3)logQ(3)=-logQ(3)H(p,q)=− i∑​ P(i)logQ(i)=−P(3)logQ(3)=−logQ(3)发现H ( p , q ) H(p,q)H(p,q)的计算不依赖于P PP矩阵,而仅仅与P PP的真实类别的i n d e x indexindex有关五、总结所以,我的理解是,在one-hot编码的前提下,在pytorch代码中target不需要以one-hot形式表示,而是直接用scalar,scalar的值则是真实类别的index。所以交叉熵的公式可表示为:

filetype

name: comprehensive_EHR_PT channels: - pytorch - conda-forge - anaconda - defaults dependencies: - asn1crypto=0.24.0=py37_0 - attrs=19.1.0=py_0 - backcall=0.1.0=py_0 - bcrypt=3.1.6=py37h7b6447c_0 - blas=1.0=mkl - bleach=3.1.0=py_0 - blosc=1.15.0=hd408876_0 - bokeh=1.1.0=py37_0 - boto=2.49.0=py37_0 - boto3=1.9.134=py_0 - botocore=1.12.134=py_0 - bottleneck=1.2.1=py37h035aef0_1 - bz2file=0.98=py37_1 - bzip2=1.0.6=h14c3975_5 - ca-certificates=2020.10.14=0 - certifi=2020.6.20=pyhd3eb1b0_3 - cffi=1.12.2=py37h2e261b9_1 - cftime=1.0.3.4=py37hdd07704_0 - chardet=3.0.4=py37_1 - click=7.0=py37_0 - cloudpickle=0.8.1=py_0 - colorama=0.4.1=py37_0 - cryptography=2.6.1=py37h1ba5d50_0 #- cudatoolkit=10.0.130=0 - cudatoolkit=11.1=0 - curl=7.64.1=hbc83047_0 - cycler=0.10.0=py37_0 - cytoolz=0.9.0.1=py37h14c3975_1 - dask=1.2.0=py_0 - dask-core=1.2.0=py_0 - dbus=1.13.2=h714fa37_1 - decorator=4.4.0=py_0 - defusedxml=0.5.0=py_1 - distributed=1.27.1=py37_0 - docutils=0.14=py37_0 - entrypoints=0.3=py37_1000 - expat=2.2.6=he6710b0_0 - fontconfig=2.13.1=he4413a7_1000 - freetype=2.9.1=h8a8886c_1 - gensim=3.4.0=py37h14c3975_0 - gettext=0.19.8.1=hc5be6a0_1002 - glib=2.56.2=had28632_1001 - gst-plugins-base=1.14.0=hbbd80ab_1 - gstreamer=1.14.0=hb453b48_1 - hdf4=4.2.13=h3ca952b_2 - hdf5=1.10.4=hb1b8bf9_0 - heapdict=1.0.0=py37_2 - icu=58.2=hf484d3e_1000 - idna=2.8=py37_0 - intel-openmp=2019.3=199 - ipykernel=5.1.0=py37h24bf2e0_1002 - ipython=7.4.0=py37h24bf2e0_0 - ipython_genutils=0.2.0=py_1 - ipywidgets=7.4.2=py_0 - jedi=0.13.3=py37_0 - jinja2=2.10.1=py_0 - jmespath=0.9.4=py_0 - jpeg=9b=h024ee3a_2 - jsonschema=3.0.1=py37_0 - jupyter=1.0.0=py_2 - jupyter_client=5.2.4=py_3 - jupyter_console=6.0.0=py_0 - jupyter_contrib_core=0.3.3=py_2 - jupyter_core=4.4.0=py_0 - kiwisolver=1.0.1=py37hf484d3e_0 - krb5=1.16.1=h173b8e3_7 - libcurl=7.64.1=h20c2e04_0 - libedit=3.1.20181209=hc058e9b_0 - libffi=3.2.1=hd88cf55_4 - libgcc-ng=8.2.0=hdf63c60_1 - libgfortran-ng=7.3.0=hdf63c60_0 - libiconv=1.15=h516909a_1005 - libnetcdf=4.6.1=h11d0813_2 - libpng=1.6.36=hbc83047_0 - libpq=11.2=h20c2e04_0 - libsodium=1.0.16=h14c3975_1001 - libssh2=1.8.2=h1ba5d50_0 - libstdcxx-ng=8.2.0=hdf63c60_1 - libtiff=4.0.10=h2733197_2 - libuuid=2.32.1=h14c3975_1000 - libxcb=1.13=h14c3975_1002 - libxml2=2.9.9=h13577e0_0 - libxslt=1.1.32=h4785a14_1002 - locket=0.2.0=py37_1 - lxml=4.3.3=py37h7ec2d77_0 - lzo=2.10=h49e0be7_2 - markupsafe=1.1.1=py37h14c3975_0 - matplotlib=3.0.3=py37h5429711_0 - mistune=0.8.4=py37h14c3975_1000 - mkl=2019.3=199 - mkl_fft=1.0.10=py37ha843d7b_0 - mkl_random=1.0.2=py37hd81dba3_0 - msgpack-python=0.6.1=py37hfd86e86_1 - nbconvert=5.4.1=py_2 - nbformat=4.4.0=py_1 - ncurses=6.1=he6710b0_1 - netcdf4=1.4.2=py37h808af73_0 - ninja=1.9.0=py37hfd86e86_0 - notebook=5.7.8=py37_0 - numexpr=2.6.9=py37h9e4a6bb_0 - numpy=1.16.2=py37h7e9f1db_0 - numpy-base=1.16.2=py37hde5b4d6_0 - olefile=0.46=py37_0 - openssl=1.1.1h=h7b6447c_0 - packaging=19.0=py37_0 - pandas=0.24.2=py37he6710b0_0 - pandoc=2.7.2=0 - pandocfilters=1.4.2=py_1 - paramiko=2.4.2=py37_0 - parso=0.4.0=py_0 - partd=0.3.10=py37_1 - pcre=8.43=he6710b0_0 - pexpect=4.7.0=py37_0 - pickleshare=0.7.5=py37_1000 - pillow=6.0.0=py37h34e0f95_0 - pip=19.0.3=py37_0 - prometheus_client=0.6.0=py_0 - prompt_toolkit=2.0.9=py_0 - psutil=5.6.2=py37h7b6447c_0 - psycopg2=2.7.6.1=py37h1ba5d50_0 - pthread-stubs=0.4=h14c3975_1001 - ptyprocess=0.6.0=py_1001 - pyasn1=0.4.5=py_0 - pycparser=2.19=py37_0 - pygments=2.3.1=py_0 - pynacl=1.3.0=py37h7b6447c_0 - pyopenssl=19.0.0=py37_0 - pyparsing=2.4.0=py_0 - pyqt=5.9.2=py37h05f1152_2 - pyrsistent=0.14.11=py37h14c3975_0 - pysocks=1.6.8=py37_0 - pytables=3.5.1=py37h71ec239_0 - python=3.7.3=h0371630_0 - python-dateutil=2.8.0=py37_0 #- pytorch=1.0.1=py3.7_cuda10.0.130_cudnn7.4.2_2 - pytorch==1.8.0=py3.7_cuda11.1_cudnn8.0.5_0 - pytz=2019.1=py_0 - pyyaml=5.1=py37h14c3975_0 - pyzmq=18.0.1=py37hc4ba49a_1 - qt=5.9.7=h5867ecd_1 - qtconsole=4.4.3=py_0 - readline=7.0=h7b6447c_5 - requests=2.21.0=py37_0 - s3transfer=0.2.0=py37_0 - scikit-learn=0.20.3=py37hd81dba3_0 - scipy=1.2.1=py37h7c811a0_0 - seaborn=0.11.0=py_0 - send2trash=1.5.0=py_0 - setuptools=41.0.0=py37_0 - sip=4.19.8=py37hf484d3e_0 - six=1.12.0=py37_0 - smart_open=1.8.2=py_0 - snappy=1.1.7=hbae5bb6_3 - sortedcontainers=2.1.0=py37_0 - sqlite=3.27.2=h7b6447c_0 - tblib=1.3.2=py37_0 - terminado=0.8.2=py37_0 - testpath=0.4.2=py_1001 - tk=8.6.8=hbc83047_0 - toolz=0.9.0=py37_0 #- torchvision=0.2.2=py_3 - torchvision==0.9.0=py37_cu111 - tornado=6.0.2=py37h516909a_0 - tqdm=4.31.1=py37_1 - traitlets=4.3.2=py37_1000 - urllib3=1.24.2=py37_0 - wcwidth=0.1.7=py_1 - webencodings=0.5.1=py_1 - wheel=0.33.1=py37_0 - widgetsnbextension=3.4.2=py37_0 - xarray=0.12.1=py_0 - xorg-libxau=1.0.9=h14c3975_0 - xorg-libxdmcp=1.1.3=h516909a_0 - xz=5.2.4=h14c3975_4 - yaml=0.1.7=h14c3975_1001 - zeromq=4.3.1=hf484d3e_1000 - zict=0.1.4=py37_0 - zlib=1.2.11=h7b6447c_3 - zstd=1.3.7=h0b5b093_0 - pip: - future==0.18.0 - hyperopt==0.1.2 - networkx==2.3 - pymongo==3.9.0 - pytorch-pretrained-bert==0.6.2 - regex==2019.8.19 - upsetplot==0.4.0 现在这些还有什么问题吗,能兼容3090了吗

绝不原创的飞龙
  • 粉丝: 4w+
上传资源 快速赚钱