如何基于另一个张量创建张量 - 在实践中学习 PyTorch?

问题描述 投票:0回答:1

我正在使用 PyTorch 学习 IA 并实现一些玩具示例。 首先,我创建了一个一维张量 (X) 和第二个张量 (y),源自第一个张量:

X = torch.arange(0, 100, 1.0).unsqueeze(dim=1)
y = X * 2

所以我有类似的东西

X = tensor([[0.], [1.], [2.], [3.], [4.], [5.], ...
y = tensor([[ 0.], [ 2.], [ 4.], [ 6.], [ 8.], [10.], ...

然后,我训练了一个模型来预测 y,它运行良好。

现在,我想要一些不同的东西。 X 为 2D,y 为 1D。 y 通过对 X 的元素进行运算来计算:

If x[0] + x[1] >0? y = 10: y -10 

X = tensor([[ 55.5348, -97.7608],
            [ 29.0493, -52.1908],
            [ 47.1722, -43.1151],
            [ 11.1242, -62.8652],
            [ 44.8067,  80.8335],...
y = tensor([[-10.], [-10.], [ 10.], [-10.], [ 10.],...

第一个问题,这对于机器学习有意义吗?

第二个... 我正在使用 numpy 生成张量。我可以用更聪明的方式来做吗?

# Criar X valores de entrada para testes
X_numpy = np.random.uniform(low=-100, high=100, size=(1000,2))
print("X", X_numpy)

#y_numpy = np.array([[ (n[0]+n[1]) >= 0 ? 10:-10] for n in X_numpy])
y_numpy = np.empty(shape=[0, 1])
for n in X_numpy:
    if n[0] + n[1] >= 0:
        y_numpy = np.append(y_numpy, [[10.]], axis=0)
    elif n[0] + n[1] < 0:
        y_numpy = np.append(y_numpy, [[-10.]], axis=0)
python numpy machine-learning pytorch artificial-intelligence
1个回答
0
投票

首先,这听起来就像一个分类问题,所以换句话说:是的,它确实有道理。

第二,是的。 Pytorch 为您提供了 numpy 提供的一切(嗯,几乎)。要生成随机均匀数据,您可以使用以下方法:

x = torch.rand(1000, 2).sub(.5).mul(200) # <- torch.rand() return range [0,1]
y = (x.sum(1, keepdim = True) > 10).float().sub(.5).mul(20) # <- (x.sum(1) > 10).float() return {0,1}
© www.soinside.com 2019 - 2024. All rights reserved.