手机做app任务的网站,简单实用wordpress主题,微信app网站建设,广州定制型网站张量#xff08;Tensor#xff09;是深度学习和科学计算中的基本数据结构#xff0c;用于表示多维数组。张量可以看作是一个更广义的概念#xff0c;涵盖了标量、向量、矩阵以及更高维度的数据结构。具体来说#xff0c;张量的维度可以是以下几种形式#xff1a; 标量Tensor是深度学习和科学计算中的基本数据结构用于表示多维数组。张量可以看作是一个更广义的概念涵盖了标量、向量、矩阵以及更高维度的数据结构。具体来说张量的维度可以是以下几种形式 标量0维张量 一个单一的数值。 例如3.0。 向量1维张量 一维数组即一个数值的列表。 例如[1.0, 2.0, 3.0]。 矩阵2维张量 二维数组即一个数值的表格。
在 PyTorch 中张量可以通过 torch.tensor 函数创建。 创建标量张量
import torch
scalar torch.tensor(3.0)
print(scalar) # tensor(3.0)
向量张良
vector torch.tensor([1.0, 2.0, 3.0])
print(vector) # tensor([1., 2., 3.])创建矩阵张量
matrix torch.tensor([[1.0, 2.0], [3.0, 4.0]])
print(matrix) # tensor([[1., 2.], [3., 4.]])张量有许多有用的属性和方法例如 形状Shape
print(matrix.shape) # torch.Size([2, 2])数据类型Data Type
print(matrix.dtype) # torch.float32设备Device
print(matrix.device) # 例如cpu 或 cuda:0torch.nn是一个实例化的使用torch.nn.functrion是方法的使用。两个都很好用
卷积操作
卷积核卷积核是一个小的矩阵用于在输入数据上执行卷积操作。它的大小通常比输入数据小得多例如 3x3、5x5 或 7x7。 滤波器滤波器是卷积核的另一个名称它与卷积核的功能相同。
卷积操作是将卷积核应用到输入数据的每个位置通过滑动窗口的方式逐元素相乘并求和生成一个新的输出值。以下是卷积操作的步骤 将卷积核放在输入数据的一个位置上。 逐元素相乘并求和得到一个新的输出值。 将卷积核移动到下一个位置重复上述步骤直到遍历整个输入数据。
卷积核的作用 特征提取卷积核通过对局部区域的操作可以提取不同层次的特征例如边缘、纹理、颜色等。 参数共享卷积核在整个输入数据上共享使得模型参数减少提高计算效率。 空间不变性卷积核能够捕捉输入数据的空间特征不受位置变化的影响。
在卷积神经网络中通常会有多个卷积核每个卷积核提取不同的特征。因此卷积层的输出不仅包含空间维度高度和宽度还包含深度维度通道数。例如一个卷积层可能有 32 个 3x3 的卷积核输入是一个 RGB 图像具有 3 个通道输出将是 32 个特征图。
权重参数本来就是随机初始化之后根据优化方法会一轮一轮的不断向最优解逼近 开始数值就是一个初始化数值,然后通过训练慢慢优化,最后得到合适的数值
注意torchvision.transforms.ToTensor 是用于将 PIL 图像或 NumPy 数组转换为张量的但它需要一个特定的输入格式。对于 NumPy 数组可以直接使用 torch.tensor 进行转换。
典型的卷积神经网络期望输入是一个四维张量形状为 (batch_size, channels, height, width)。 其中batch_size 表示每个批次的样本数量channels 表示输入图像的通道数对于灰度图像通道数为 1对于彩色图像通道数为 3height 和 width 表示图像的高度和宽度。 下面是一个简单的卷积操作
import torch
import torch.nn.functional as F
import numpy as np
inputtensor torch.tensor([[1, 2, 0, 3, 1],[0, 1, 2, 3, 1],[1, 2, 1, 0, 0],[5, 2, 3, 1, 1],[2, 1, 0, 1, 1]], dtypetorch.float32)
# 使用 NumPy 创建卷积核
np_kernel np.random.randn(3, 3)# 将 NumPy 数组转换为 PyTorch 张量
kernel torch.tensor(np_kernel, dtypetorch.float32)inputtensortorch.reshape(inputtensor,(1,1,5,5))
kerneltorch.reshape(kernel,(1,1,3,3))
print(kernel.shape)
print(inputtensor.shape)outputF.conv2d(inputtensor,kernel,stride1)
print(output)
output2F.conv2d(inputtensor,kernel,stride2)
print(output2)padding即在输入的周围进行填充一圈再进行卷积操作空白部分默认视为0
import torch
import torch.nn.functional as F
import numpy as np
inputtensor torch.tensor([[1, 2, 0, 3, 1],[0, 1, 2, 3, 1],[1, 2, 1, 0, 0],[5, 2, 3, 1, 1],[2, 1, 0, 1, 1]], dtypetorch.float32)
# 使用 NumPy 创建卷积核
np_kernel np.random.randn(3, 3)# 将 NumPy 数组转换为 PyTorch 张量
kernel torch.tensor(np_kernel, dtypetorch.float32)inputtensortorch.reshape(inputtensor,(1,1,5,5))
kerneltorch.reshape(kernel,(1,1,3,3))
print(kernel.shape)
print(inputtensor.shape)outputF.conv2d(inputtensor,kernel,stride1)
print(output)
output2F.conv2d(inputtensor,kernel,stride2)
print(output2)
output3F.conv2d(inputtensor,kernel,stride1,padding1)
print(output3)