python
复制代码
import torch
# 0维标量
scalar = torch.randn(())
print(f"标量: {scalar}, 形状: {scalar.shape}")
# 1维向量
vector = torch.randn(4)
print(f"向量: {vector}, 形状: {vector.shape}")
# 2维矩阵
matrix = torch.randn(2, 3)
print(f"矩阵: {matrix}, 形状: {matrix.shape}")
# 3维张量(模拟单张 RGB 图像)
tensor_3d = torch.randn(3, 64, 64)
print(f"3维张量形状: {tensor_3d.shape}")
# 4维张量(模拟批量图像,batch=2)
tensor_4d = torch.randn(2, 3, 128, 128)
print(f"4维张量形状: {tensor_4d.shape}")
import torch
# torch.rand 示例
rand_tensor = torch.rand(2, 2)
print(f"均匀分布: {rand_tensor}, 形状: {rand_tensor.shape}")
# torch.randint 示例
int_tensor = torch.randint(low=1, high=100, size=(3,))
print(f"随机整数: {int_tensor}, 形状: {int_tensor.shape}")
# torch.normal 示例
mean = torch.tensor([5.0, 10.0])
std = torch.tensor([2.0, 3.0])
normal_tensor = torch.normal(mean, std)
print(f"自定义正态分布: {normal_tensor}, 形状: {normal_tensor.shape}")
import torch
import torch.nn as nn
input_tensor = torch.randn(4, 3, 64, 64) # batch=4
print(f"输入尺寸: {input_tensor.shape}")
conv1 = nn.Conv2d(3, 32, kernel_size=5, stride=2, padding=2)
conv_output = conv1(input_tensor)
print(f"卷积后尺寸: {conv_output.shape}") # 预期: [4, 32, 32, 32] (stride=2 减半)
pool = nn.MaxPool2d(2, 2)
pool_output = pool(conv_output)
print(f"池化后尺寸: {pool_output.shape}") # 预期: [4, 32, 16, 16]
flattened = pool_output.view(pool_output.size(0), -1)
print(f"展平后尺寸: {flattened.shape}") # 预期: [4, 8192] (32*16*16)
import torch
A = torch.randn(3, 2, 4) # batch=3, 2x4 矩阵
B = torch.randn(1, 4, 3) # batch=1, 4x3 矩阵
result = A @ B # B 扩展 batch 到3,结果: (3, 2, 3)
print(f"A 形状: {A.shape}\nB 形状: {B.shape}\n结果形状: {result.shape}")