【DL at H】动手学深度学习之自问自答

文章目录


2020.2.11

第一课 线性回归

1.怎样去初始化一个多层的网络?(共有三种方法)

# method one
net = nn.Sequential(
    nn.Linear(num_inputs, 1)
    # other layers can be added here
    )

# method two
net = nn.Sequential()
net.add_module('linear', nn.Linear(num_inputs, 1))
# net.add_module ......

# method three
from collections import OrderedDict
net = nn.Sequential(OrderedDict([
          ('linear', nn.Linear(num_inputs, 1))
          # ......
        ]))

2.初始化模型参数的方法

# pytorch method
from torch.nn import init

init.normal_(net[0].weight, mean=0.0, std=0.01)
init.constant_(net[0].bias, val=0.0)  # or you can use `net[0].bias.data.fill_(0)` to modify it directly
# manual method
w = torch.tensor(np.random.normal(0, 0.01, (num_inputs, 1)), dtype=torch.float32)
b = torch.zeros(1, dtype=torch.float32)

w.requires_grad_(requires_grad=True)
b.requires_grad_(requires_grad=True)

3.有哪些定义好的损失函数?

均方、交叉熵

4.怎么定义优化函数?

optimizer = optim.SGD(net.parameters(), lr=0.03)

5.优化函数是怎么工作的?

常用的一种小批量随机梯度下降方法,首先随机选取一个小批量数据,通过反向传播计算Loss梯度,以这个梯度与一个预设的正数的乘积作为参数调整量,迭代更新。

6.训练的代码块一般是什么结构?

epoch 循环完成所有数据的一次训练
	batch 循环完成一个batch的训练
		数据读入
		网络输出结果
		计算Loss
		梯度清零
		反向传播
		参数更新

第二课 softmax与分类模型

1.softmax的形式是什么?它解决了哪两个问题?

e1/e1+e2+e3+…
解决了预测值与标签值的误差难度量、预测结果不直观这两个问题

2.输出,输入(样本,特征),参数,偏差,批量一般是怎么设置的?为什么要这么设置?

一般把一个批量作为一个tensor输入,batchsize表示这个批量包含的样本数,一张图片包含的特征即为长*宽个像素;
输出大小与网络的需求有关;
每层参数的大小与每层输出一致;
批量的设置主要是为了充分利用矢量计算的效率。

3.交叉熵的形式及优点(相对于平方损失)

(1/n)sum(log(预测类别正确的置信度[0-1]))
交叉熵相对于平方损失只关心正确预测结果

4.怎么获取数据iter,参数初始化,定义模型,定义损失函数

获取数据

batch_size = 256
num_workers = 4
train_iter = torch.utils.data.DataLoader(mnist_train, batch_size=batch_size, shuffle=True</
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值