一、简单理解使用pytorch进行模型预测时的逻辑规律基本如下:
-
输入input,将input转化为张量(tensor)
-
设计模型的层
pytorch中的torch.nn模块包含torch已经准备好的层,方便使用者调用构建神经网络,包括:卷积层、池化层、激活函数层、全连接层等
相关使用方法:
卷积层:输入和卷积核之间的内积运算,是两个实值函数之间的一种数学运算;
池化层:对卷积层得到的特征进行进一步处理(主要是降维),对数据进一步浓缩;
激活函数:非线性数据的线形转化,全连接层需要加相应的激活函数
全连接层:指由一个或者多个神经元组成的层,其所有的输出和该层所有的输入都有连接,每个输入都会影响所有神经元的输出。
只有全连接层组成的网络是全连接神经网络,可用于数据的分类或者回归预测,卷积神经网络和循环神经网络的末端通常由多个全连接层组成。
3. 对模型中的数据抓取情况进行设计
需要对模型循环次数,每次循环的取样数、选择最终模型的方法进行定义
4.对最终选择的模型进行验证集验证,包括损失函数、准确性、混淆矩阵图示。
二、一些相关名词的解释:
1.梯度
如果这个斜率越大,就表明其上升趋势越强劲。当这个斜率为0时,就达到了这个函数的“强弩之末”,即达到了极值点。在单变量的实值函数中,梯度可简单理解为只是导数,或者说对于一个线性函数而言,梯度就是曲线在某点的斜率。
2.数据类型(张量类型)
在torch中CPU和GPU张量分别有8中数据类型,torch中默认的类似是32为浮点型,可以通过torch.set_default_tensor_type()函数设置,但是此函数只支持设置浮点型数据类型
3.张量的产生和计算
pytorch提供了进行张量计算的相关命令,例如张量间的合并、格式转换等
此外,list、array、张量之间可以进行相关转化,命令行如下:
1)list 转array:
ndarray=np.array(list)
2)list转tensor
tensort=torch.Tesnsort(list)
3)numpy 转list
list=ndarray.tolist()
4)numpy 转tensort
tensort=torch.from_numpy(ndarray)
5)tensor 转list
list=tensort.numpy().tolist()
6)tensort转numpy
ndarray=tensort.numpy()
###gpu上的tensort不能直接转为numpy,需要先放回到cpu种
ndarray=tensort.cpu().numpy
CPU tensort 和GPU tensort之间的转换
CPU ---> GPU: data.cuda()
GPU ---> CPU: data.cpu()
4.python中类的说明
因为在使用pytroch时会多次应用到“类”的定义,尤其是在进行网络结构定义、常规函数重定义时。
类(Class):用来描述具有相同属性和方法的对象的集合,它定义了该集合中每个对象所共有的属性和方法,对象是类的实例。
类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
数据成员:类变量或者实例变量,用于处理类及其实例对象的相关数据。
方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫覆盖,也称为方法的重写。
局部变量:定义在方法中的变量,只作用于当前实例的类。
实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。
继承:即一个派生类继承基类的字段和方法。
实例化:创建一个类的实例,类的具体对象
方法:类中定义的函数
对象:通过类定义的数据结构实例,对象包括两个数据成员(类变量和实例变量)和方法。
创建类:
class ClassName:
‘类的帮助信息’ #类文档字符串
class_suite #类体
类的帮助信息可以通过ClassName.__doc__查看。 class_suite 由类成员,方法,数据属性组成。
例子说明🌰:
class Employee: ###定义一个所有员工的类
empCount=0 ##类变量,它的值(后面的Employee.empCount) 可以在类的内部和外部类使用Employee.empCount访问)
def __init__(self,name,salary): ###__init__() 方法是一种特殊方法,被称为类的构造函数或者初始化方法,当创建这个类的实例时就会调用该方法
self.name=name ##self代表类的实例,self在定义类的方法时时必须有的,虽然在调用时不必传入相应的参数
self.salary=salary
Employee.empCount+=1
def displayCount(self):
print("Tatol Emplyee",Employee.empCount)
def displayEmployee(self):
print ("Name : ", self.name, ", Salary: ", self.salary)
ref:
https://www.runoob.com/python3/python3-class.html
这可能是最简单易懂的机器学习入门(小白必读)_机器学习算法与Python学习-CSDN博客
一文看懂机器学习“3种学习方法+7个实操步骤+15种常见算法” (easyai.tech)
公众号文章: