library(torch)
# 线性层,输入特征5,输出特征16,常用于神经网络的第一层
l <- nn_linear(in_features = 5, out_features = 16)
l
l$weight
l$bias
# 生成一个尺寸为 [50, 5] 的随机张量 x,
# 其中包含50个样本,每个样本有5个特征。
# 数据服从标准正态分布。
x <- torch_randn(50, 5)
# x 传递给线性层 l,得到输出 output
output <- l(x)
# 获取并返回输出张量的尺寸,即 [50, 16]
output$size()
# 用于跟踪生成 output 张量的计算图中的梯度函数。
output$grad_fn
# 定义损失函数为output的均值
loss <- output$mean()
# loss的反向传播
loss$backward()
# 获取线性层 l 的权重参数的梯度。
# 这些梯度用于更新权重,
# 以最小化损失函数。
l$weight$grad
# 多层感知机,模型是通过 nn_sequential 组合多个神经网络模块构建
mlp <- nn_sequential(
nn_linear(10, 32),
nn_relu(),
nn_linear(32, 64),
nn_relu(),
nn_linear(64, 1)
)
# 调用该模块
mlp(torch_randn(5, 10))
发表评论