import torch
# 创建一个张量 (Tensor)
x = torch.tensor([1.0, 2.0, 3.0])
print("创建的张量 x:", x)
# 创建一个随机初始化的张量
y = torch.rand(2, 3)
print("随机初始化的张量 y:\n", y)
# 张量加法
z = x + x
print("张量 x 和 x 相加的结果 z:", z)
# 自动求导功能
a = torch.tensor([2.0], requires_grad=True)
b = torch.tensor([3.0], requires_grad=True)
c = a * b
c.backward() # 计算梯度
print("a 的梯度:", a.grad)
print("b 的梯度:", b.grad)
# 创建一个神经网络层
linear_layer = torch.nn.Linear(10, 5) # 输入维度为 10,输出维度为 5
input_tensor = torch.randn(1, 10) # 创建一个随机输入张量
output_tensor = linear_layer(input_tensor) # 将输入传递给线性层
print("线性层的输出:\n", output_tensor)
# 定义损失函数和优化器
loss_fn = torch.nn.MSELoss()
optimizer = torch.optim.SGD(linear_layer.parameters(), lr=0.01)
# 模拟训练过程
target = torch.randn(1, 5) # 创建一个随机目标张量
for epoch in range(10):
optimizer.zero_grad() # 清除梯度
output = linear_layer(input_tensor)
loss = loss_fn(output, target)
loss.backward() # 反向传播
optimizer.step() # 更新参数
print(f"Epoch {epoch}, Loss: {loss.item()}")
创建张量:使用 torch.tensor() 创建一个张量,可以指定初始值。torch.rand() 用于创建随机初始化的张量。
张量运算:可以直接对张量进行加法等运算,结果仍然是一个张量。
自动求导:通过设置 requires_grad=True,可以让 PyTorch 跟踪张量的操作,并在需要时自动计算梯度。backward() 方法用于反向传播并计算梯度。
神经网络层:torch.nn.Linear 是一个简单的线性层,可以接受输入张量并返回输出张量。
损失函数和优化器:torch.nn.MSELoss 是均方误差损失函数,torch.optim.SGD 是随机梯度下降优化器。在训练过程中,通过 zero_grad() 清除梯度,backward() 计算梯度,step() 更新参数。
模拟训练过程:通过循环迭代,模拟了神经网络的训练过程,包括前向传播、计算损失、反向传播和更新参数。
下一篇:plt在python中的用法
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站