1. 安装anaconda,pycharm, CUDA+CuDNN(可选),虚拟环境,pytorch,并实现hello pytorch查看pytorch的版本
import torch
print("hello torch{}".format(torch.__version__))
print(torch.cuda.is_available())
输出
hello torch1.2.0+cu92
True
2. 张量与矩阵、向量、标量的关系是怎么样的?
答:张量是一个多维数组,他是标量,向量,矩阵的高维拓展。
3. Variable“赋予”张量什么功能?
答:Variable是torch.autograd中的数据类型,主要用于封装Tensor,使得tensor可以进行自动求导
主要有五个属性:
1.data:被包装的Tensor
2.grad:data的梯度
3.grad_fn:创建Tensor的Function(创建张量所用到的方法,如加法或乘法),是自动求导的关键
4.requires.grad:指示张量是否需要梯度,不需要梯度的张量可以设置为false
5.is_leaf:指示张量在计算图中是否是叶子结点。
4. 采用torch.from_numpy创建张量,并打印查看ndarray和张量数据的地址;
import torch
import numpy as np
x = np.zeros((3, 3))
y = torch.from_numpy(x)
print(y)
print(id(y))
输出:
tensor([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]], dtype=torch.float64)
2549447462704
5. 实现torch.normal()创建张量的四种模式。
1、标量标量(mean,std)
t_normal = torch.normal(0, 1, size=(2, 2))
print(t_normal) #需另加一个变量size
输出
tensor([[-2.2173, 0.3073],
[ 1.9485, 1.4101]])
2、标量张量
t_normal = torch.normal(mean=0, std=torch.arange(1., 4.))
# 三个数,注意1.和4.表示浮点型,不加点报错
print(t_normal) #需另加一个变量size
输出:
tensor([-0.8692, -1.1747, 2.5515])
3、张量标量
t_normal = torch.normal(mean=torch.arange(1., 4.), std=1)
# 三个数,注意1.和4.表示浮点型,不加点报错
print(t_normal) #需另加一个变量size
输出:
tensor([1.4820, 2.4738, 3.1875])
4、张量张量
t_normal = torch.normal(mean=torch.arange(1., 4.), std=torch.arange(1., 4.))
print(t_normal) #需另加一个变量size
输出:
tensor([-0.2854, 2.2077, 3.0150])
1、调整线性回归模型停止条件以及y = 2*x + (5 + torch.randn(20, 1))中的斜率,训练一个线性回归模型;
w变为3,损失变为小于0.5停止
2、计算图的两个主要概念是什么?
计算图有两个主要元素:结点(Node),边(Edge)
结点表示数据,如向量,矩阵,张量
边表示运算,如加减乘除卷积,激活函数等
3、动态图与静态图的区别是什么?
动态图:运算与搭建同时进行(特点:灵活、易调节)
静态图:先搭建图,后运算(特点:高效,不灵活)
1、逻辑回归模型为什么可以进行二分类?
利用激活函数sigmoid()将原线性回归的取值映射到0到1的概率取值上来,并设定阈值,将最终取值大于0.5样本的判定为1,小于0.5的判定为0。
随后利用交叉熵损失函数训练模型,得到分类边缘的w和b
2、采用代码实现逻辑回归模型的训练,并尝试调整数据生成中的mean_value,将mean_value设置为更小的值,例如1,或者更大的值,例如5,会出现什么情况?
再尝试仅调整bias,将bias调为更大或者负数,模型训练过程是怎么样的?
变为1后样本更加紧凑,样本边界难以确定,损失难以下降,准确性难以提高:
调为5后样本极易区分:
bias更大:样本整体距离中心偏移较多,w和b需要较多次迭代以取得更好效果,但样本的可分离程度不变
bias对模型的效果取决于其绝对值的大小,越大效果如上,越小则样本距离中心的偏移程度小,样本边界更容易划分。