概率
# 用于处理日期和时间
%pip install pytz
# 包含了许多用于数学、科学和工程的函数
%pip install scipy
# 在Jupyter笔记本中嵌入绘图
%matplotlib inline
import torch
# multinomial是一个用于生成多项式分布的类
from torch.distributions import multinomial
from d2l import torch as d2l
概率向量
# 输入的是概率向量
fair_probs = torch.ones([6]) / 6
# 输出是另一个相同长度的向量:它在索引i处的值是采样结果中i出现的次数
multinomial.Multinomial(1, fair_probs).sample()
# tensor([0., 1., 0., 0., 0., 0.])
multinomial.Multinomial(10, fair_probs).sample()
# tensor([2., 2., 1., 3., 1., 1.])
掷骰子实验
进行500组实验,每组抽取10个样本
counts = multinomial.Multinomial(10, fair_probs).sample((500, ))
print(counts)
cum_counts = counts.cumsum(dim=0)
print(cum_counts)
# total_count = cum_counts.sum()
# estimates = cum_counts / total_count
estimates = cum_counts / cum_counts.sum(dim=1, keepdims=True)
print(estimates)
# estimates = estimates.view(-1, 1)
d2l.set_figsize((6, 4.5))
for i in range(6):
d2l.plt.plot(estimates[:, i].numpy(),
label=("P(die=" + str(i + 1) + ")"))
d2l.plt.axhline(y=0.167, color='black', linestyle='dashed')
d2l.plt.gca().set_xlabel('Groups of experiments')
d2l.plt.gca().set_ylabel('Estimated probability')
d2l.plt.legend()
线性神经网络
随机梯度下降
梯度下降最简单的用法是计算损失函数(数据集中所有样本的损失均值)关于模型参数的导数(也可称为梯度),但是在每次更新参数之前,我们必须遍历整个数据集。因此,我们在每次需要计算更新的时候随机抽取一小批样本,这种变体叫做小批量随机梯度下降。
正态分布与平方损失
若随机变量x具有均值和方差
(标准差
) ,其正态分布概率密度函数如下: