1.”tensor”这个单词一般可译作“张量”,张量可以看作是一个多维数组。标量可以看作是0维张量,向量可以看作1维张量,矩阵可以看作是二维张量
2.Tensor的创建

可以直接根据数据创建:
x = torch.tensor([5.5, 3])
(tensor([5.5000, 3.0000]))

可以通过现有的Tensor来创建,此方法会默认重用输入Tensor的一些属性,例如数据类型,除非自定义数据类型。
x = x.new_ones(5, 3, dtype=torch.float64) # 返回的tensor默认具有相同的torch.dtype和torch.device
print(x)

x = torch.randn_like(x, dtype=torch.float) # 指定新的数据类型
print(x)

输出如下:
tensor([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]], dtype=torch.float64)
tensor([[ 0.6035, 0.8110, -0.0451],
[ 0.8797, 1.0482, -0.0445],
[-0.7229, 2.8663, -0.5655],
[ 0.1604, -0.0254, 1.0739],
[ 2.2628, -0.9175, -0.2251]])

我们可以通过shape或者size()来获取Tensor的形状:
print(x.size())
print(x.shape)

3.相关 / 卷积 运算
4.from ……import ……
import …… as …… 简写的方式

torch.nn.Linear(in_features, out_features, bias=True)
torch.nn.Sequential (*args) (A sequential container)
构建神经网络模型:
net = nn.Sequential (
nn.Linear(num_inputs, num_hiddens),
nn.ReLU(),
nn.Linear(num_hiddens, num_outputs),
)

(from torch.nn import init)
(torch.nn.init.normal_(tensor, mean=0.0, std=1.0))
网络参数初始化:
for params in net.parameters():
init.normal_(params, mean=0, std=0.01)

读入数据:
batch_size = 256
train_iter, test_iter =
d2l.load_data_fashion_mnist(batch_size)
28 x 28 —> 784 x 1 拉平
FlattenLayer()
**

损失函数
loss = torch.nn.CrossEntropyLoss()
# 学习率
lr=0.5
# 优化算法
optimizer = torch.optim.SGD(net.parameters(), lr)
图片.png

nn.Module 是一个神经网络的基类
可以通过继承nn.Module 构建自己的网络
init 和forward 函数必须重定义 ( 重载)
模型参数自动初始化
**
参数定义要用nn.Parameter

数值和梯度的访问
没有反向传播,梯度不计算
图片.png