Python基础及函数解读(深度学习)

一、快捷键

ctrl+r:查找替换

ctrl+alt_L:排版代码

ctrl+/:注释

二、语句

1.加注释

单行注释:

(1)在代码上面加注释: # 后面跟一个空格

(2)在代码后面加注释:和代码相距两个空格, # 后面再跟一个空格

多行注释:按住shift + 点击三次"(英文状态下)

2.with...as...

with as 语句操作上下文管理器(context manager),它能够帮助我们自动分配并且释放资源。

3.pass

是空语句,是为了保持程序结构的完整性,一般用于占位,比如写了一个def函数,但函数内容暂时未填充,可用pass代替,程序会正常运行,在Python2.x版本中pass是必须的,在Python3.x的时候pass可以写或不写

def function():
    pass

三、导入

导入模块有两种常用方法 :import 语句和 from … import 语句

import XXX:导入模块,后调用此模块的ZZ方法时格式为XXX.ZZ()

from XXX import ZZ:ZZ为模块 XXX里的方法,后调用此模块中的ZZ方法时格式为ZZ()

(1条消息) 坑啊!为什么不建议用 from xxx import *!_菜鸟学Python的博客-CSDN博客

1.from __future__ import print_function

该语句是python2的概念,那么python3对于python2就是future了,也就是说,在python2的环境下,超前使用python3的print函数

2.import numpy as np

利用命令“import numpy as np”将numpy库取别名为“np”

3.from tensorboardX import SummaryWriter

是神经网络中的可视化工具

Pytorch中TensorBoard及torchsummary的使用详解 | w3c笔记 (w3cschool.cn)

4.import os

import os python环境下对文件,文件夹执行操作的一个模块

import os.path获取文件的属性

5.import torch.nn.functional as F

包含 torch.nn 库中所有函数

同时包含大量 loss 和 activation function

6.import argparse

(1条消息) argparse.ArgumentParser()用法解析_quantLearner的博客-CSDN博客_argparse.argumentparser() 参数

用来设置命令行参数,参数和超参数的区别:

超参数(Hyperparameter) - HuZihu - 博客园 (cnblogs.com)

四、一般函数解读

1.os.path.join

用于路径拼接,注意/的运用

(2条消息) os.path.join()函数用法详解_swan777的博客-CSDN博客

import os
path='C:/yyy/yyy_data/'
print(os.path.join(path,'/abc'))
print(os.path.join(path,'abc'))
结果
C:/abc
C:/yyy/yyy_data/abc

2.shutil.rmtree()

递归地删除文件夹以及里面的文件

3.random.randint(start, stop)

返回指定范围内的整数

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

4.enumerate()

是python的内置函数,,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值,enumerate多用于在for循环中得到计数

(4条消息) python enumerate用法总结_竹聿Simon的博客-CSDN博客_enumerate python用法

5.shape()

是numpy中的函数,可以读取矩阵的长度,shape[0]就是读取矩阵第一维度的长度

import numpy as np
a=np.array([[1,2,3,4],[5,6,7,8]])
print(a.shape[0])
print(a.shape[1])
结果
2
4

6.optimizer.zero_grad()

(8条消息) optimizer.zero_grad()_Wanderer001的博客-CSDN博客

五、网络函数解读

1.softplus()激活函数

softplus的数学表达式以及与Relu的函数对比,相当于Relu的平滑

2.forward()

将上一层的输出作为下一层的输入,并计算下一层的输出,一直到运算到输出层为止。

六、torch函数解读

1.torch.tensor()

在PyTorch中,有一个类似于numpy的库,称为Tensor。Tensor自称为神经网络界的numpy,用来存储和变换数据,会将tensor放入GPU中进行加速运算(如果有GPU)。

2.torch.sum()

对输入的tensor数据的某一维度求和,有两种方法,dim=0纵向求和,dim=1横向求和

(1条消息) torch.sum()、np.sum()和sum()简要介绍_np.sum torch.sum_两分先生的博客-CSDN博客

import torch
import numpy as np

a = torch.tensor([[1, 2, 3], [4, 5, 6]])
b = np.array([[1, 2, 3], [4, 5, 6]])
c = [1, 2, 3, 4, 5, 6]

print(torch.sum(a))
print(torch.sum(a, dim=0))
print(torch.sum(a, dim=1))
print(torch.sum(a, dim=1, keepdim=True))

print(np.sum(b))
print(np.sum(b, axis=0))
print(np.sum(b, axis=1))
print(np.sum(b, axis=1, keepdims=True))

print(sum(c))
print(sum(c, 1))
print(sum(c, 2))

结果
tensor(21)
tensor([5, 7, 9])
tensor([ 6, 15])
tensor([[ 6],
        [15]])
21
[5 7 9]
[ 6 15]
[[ 6]
 [15]]
21
22
23

3.torch.mul(a, b)

矩阵a和b对应位相乘,a和b的维度必须相等,比如a的维度是(1, 2),b的维度是(1, 2),返回的仍是(1, 2)的矩阵;

(1条消息) Pytorch矩阵乘法之torch.mul() 、 torch.mm() 及torch.matmul()的区别_irober的博客-CSDN博客

a = torch.tensor([[1, 2, 3], [4, 5, 6]])
print(a[:, :])#获取矩阵的全部值
l_x = a[:, :].mul(a[:, :])#矩阵对应位相乘
print(l_x)

结果
tensor([[1, 2, 3],
        [4, 5, 6]])
tensor([[ 1,  4,  9],
        [16, 25, 36]])

4.torch.zeros()

返回一个由标量值0填充的张量

>>> torch.zeros(2, 3)
tensor([[ 0.,  0.,  0.],
        [ 0.,  0.,  0.]])

>>> torch.zeros(5)
tensor([ 0.,  0.,  0.,  0.,  0.])

5.torch.device()

代表将torch.tensor分配到的设备的对象(简单点说,就是分配到你的CPU还是GPU上,以及哪块GPU上)

6.lambda

函数的简化,可以直接赋给变量并调用

细说Python的lambda函数用法,建议收藏 - 知乎 (zhihu.com)

import torch
c=lambda x,y,z:x*y*z
print(c(2,3,4))
结果
24

7.torch.utils.data.DataLoader()

将数据加载到模型

(2条消息) PyTorch学习笔记(6)——DataLoader源代码剖析_sooner高的博客-CSDN博客_woker_init_fn

数据集定义与加载-使用文档-PaddlePaddle深度学习平台

8.Tensorboard:SummaryWriter类

可以看训练过程中loss的变化。之前用于Tensorflow框架,自Pytorch1.1之后,Pytorch也加了这个功能

writer1=SummaryWriter('runs/exp')#将loss值存储到此路径中

Pytorch深度学习实战教程(四):必知必会的炼丹法宝 - 知乎 (zhihu.com)

9.torch.optim.SGD()

随机梯度下降算法,parameters为待优化参数的iterable(w和b的迭代),lr为学习率

optim.SGD(pnet.parameters(), lr=opt.lr, momentum=opt.momentum)

(3条消息) torch.optim.SGD()_echo_gou的博客-CSDN博客_torch.optim.sgd

10.torch.optim.lr_scheduler

torch.optim.lr_scheduler模块提供了一些根据epoch训练次数来调整学习率(learning rate)的方法。一般情况下我们会设置随着epoch的增大而逐渐减小学习率从而达到更好的训练效果。

常见的调整策略:

史上最全学习率调整策略lr_scheduler - cwpeng - 博客园 (cnblogs.com)

11.torch.nn.functional.normalize

归一化,将某一个维度除以那个维度对应的范数

(4条消息) 【Pytorch】F.normalize计算理解_静静喜欢大白的博客-CSDN博客_f.normalize

12.to(device)

将所有最开始读取数据时的tensor变量copy一份到device所指定的GPU上去,之后的运算都在GPU上进行。

(4条消息) Pytorch 学习笔记--to(device)的用法_SAMSTAYREAL的博客-CSDN博客_.to(device)

13.torch.nn.MSELoss()

用来计算预测值和真实值的损失函数

import torch
import torch.nn as nn

loss = nn.MSELoss(reduction = 'none')
input = torch.tensor([[-0.1514,  0.0744, -1.5716],
        [-0.3198, -1.2424, -1.4921],
        [ 0.5548,  0.8131,  1.0369]], requires_grad=True)
target = torch.tensor([[0., 1., 0.],
        [0., 1., 1.],
        [0., 0., 0.]])
output = loss(input, target)
print(input)                    #预测值张量
print(target)                    #真实值张量
print(output)                    #损失值张量
结果
tensor([[-0.1514,  0.0744, -1.5716],
        [-0.3198, -1.2424, -1.4921],
        [ 0.5548,  0.8131,  1.0369]], requires_grad=True)
tensor([[0., 1., 0.],
        [0., 1., 1.],
        [0., 0., 0.]])
tensor([[0.0229, 0.8567, 2.4699],
        [0.1023, 5.0284, 6.2106],
        [0.3078, 0.6611, 1.0752]], grad_fn=<MseLossBackward>)

(4条消息) pytorch损失函数nn.L1Loss()_桀骜不驯的山里男人的博客-CSDN博客_nn.l1loss

猜你喜欢

转载自blog.csdn.net/m0_67357141/article/details/128947181