动手学深度学习PyTorch版

概率

# 用于处理日期和时间
%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具有均值\mu和方差\sigma ^{2}(标准差\sigma) ,其正态分布概率密度函数如下:

### 动手学深度学习 PyTorch 本教程 #### 卷积层的实现细节 卷积层通过对输入数据和卷积核权重执行互相关运算,并在添加标量偏置后生成输出。因此,在卷积层中有两个可训练参数:卷积核权重和标量偏置[^2]。 为了具体展示如何创建一个简单的二维卷积层,下面是一个自定义 `Conv2D` 类的例子: ```python import torch from torch import nn class Conv2D(nn.Module): def __init__(self, kernel_size): super().__init__() self.weight = nn.Parameter(torch.rand(kernel_size)) self.bias = nn.Parameter(torch.zeros(1)) def forward(self, x): return corr2d(x, self.weight) + self.bias ``` 这段代码展示了如何利用 Python 和 PyTorch 来构建自己的卷积层类。注意这里假设已经有一个名为 `corr2d` 的函数用于计算二维互相关操作。 #### 数据类型的转换 当处理张量时,有时需要将其值提取为普通的 Python 数字。对于包含单个元素的张量,可以通过调用 `.item()` 方法或使用内置类型转换函数来完成此操作[^3]: ```python a = torch.tensor([3.5]) print(f'Tensor: {a}, Item: {a.item()}, Float: {float(a)}, Int: {int(a)}') ``` 上述例子说明了不同方式将大小为 1 的张量转成基本的数据类型的方法。 #### 不同类型的分布变化及其影响 机器习模型可能会遇到三种主要类型的分布差异情况:协变量偏移、标签偏移以及概念漂移。每种情况下受影响的概率分布部分有所不同[^4]: - **协变量偏移**指的是特征空间内的概率分布发生变化而条件概率保持恒定; - **标签偏移**意味着目标变量的整体分布有所变动但是给定条件下其预测关系未变; - **概念漂移**则表示即使输入特征相同,它们对应的期望输出也发生了改变。 了解这些现象有助于更好地理解何时何地可能出现性能下降,并采取相应措施加以应对。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值