张量,RDF三元组
张量(Tensors)是一种类似于数组与矩阵的特殊数据结构,我们可以利用张量来表示一个模型的输入,输出以及模型的参数。张量与Numpy的数组十分类似,只是张量可以运行在GPUs等硬件加速器上。实际上,张量与Numpy数组通常可以共享一块内存,避免了复制数据的需要。另外,张量还具有自动微分的功能。
import torch import numpy as np
张量的初始化
直接从数据中产生
张量可以直接从数据中产生,数据类型可以自动推断出来。
data = [[1,2],[3,4]]
x_data = torch.tensor(data)
从Numpy数组中产生
np_array = np.array(data)
x_np = torch.from_numpy(np_array)
从另一个张量中产生
新的张量会保留张量参数的特性(形状,数据类型)
x_ones = torch.ones_like(x_data) print(x_ones) x_rand = torch.rand_like(x_data, dtype=torch.float) print(x_rand)
输出:
tensor([[1, 1], [1, 1]]) tensor([[0.9309, 0.9033], [0.7956, 0.0808]])
随机或常量值张量
shape是表示张量维度的一个元组,在下列函数中,它决定了输出张量的维数
shape = (2,3,) rand_tensor = torch.rand(shape) ones_tensor = torch.ones(shape) zeros_tensor = torch.zeros(shape) print(f"Random Tensor: \n {rand_tensor} \n") print(f"Ones Tensor: \n {ones_tensor} \n") print(f"Zeros Tensor: \n {zeros_tensor}")
输出:
Random Tensor: tensor([[0.7546, 0.8253, 0.8290], [0.3136, 0.3674, 0.8277]]) Ones Tensor: tensor([[1., 1., 1.], [1., 1., 1.]]) Zeros Tensor: tensor([[0., 0., 0.], [0., 0., 0.]])
张量的属性
张量的属性描述了张量的形状,数据类型以及它们所存储的设备类型。
tensor = torch.rand(3,4) print(f"Shape of tensor: {tensor.shape}") print(f"Datatype of tensor: {tensor.dtype}") print(f"Device tensor is stored on: {tensor.device}")
输出:
Shape of tensor: torch.Size([3, 4]) Datatype of tensor: torch.float32 Device tensor is stored on: cpu
转自:https://zhuanlan.zhihu.com/p/401080421
RDF三元组
三元组是“主语/谓语/主语”形式的语句,即通过谓语将一个宾语(主语)与另一个宾语(宾语)或字面意思联系起来的语句。我们都熟悉三元组:三元组是二元关系中最小的不可约表示。简而言之:电子表格是三元组的集合,例如,如果电子表格中的一列标题为“Paul”,行的标题为“has Sister”,单元格中的值为“Lisa”。这里有一个三元组:Paul(主语)和Sister(谓语)Lisa(字面/宾语)
RDF三元组的特殊之处在于,三元组的每个部分都有一个与之相关联的URI,因此日常语句"Mike Smith knows John Doe"在RDF中可以表示为:
uri://people#MikeSmith12 http://xmlns.com/foaf/0.1/knows uri://people#JohnDoe45
与电子表格类似的是,通过给URI的每个部分指定一个唯一的地址,你给电子表格中的单元格一个完整的地址空间.....所以原则上你可以把电子表格的每个单元格(如果用RDF三元组表示的话)粘贴到不同服务器上的不同文档中,然后通过一个查询重新构造电子表格。