从另一个张量创建特定张量

jgauth

q_pred = self.Q.forward(states) 给我以下输出:

tensor([[-4.4713e-02,  4.2878e-03],
        [-2.2801e-01,  2.2295e-01],
        [-9.8098e-03, -1.0766e-01],
        [-1.4654e-01,  1.2742e-01],
        [-1.6224e-01,  1.6565e-01],
        [-3.6515e-02,  3.1022e-02],
        [-4.5094e-02,  1.4848e-02],
        [-1.4157e-01,  1.3974e-01],
        [-3.0593e-03, -4.2342e-02],
        [-4.1689e-02,  2.9376e-02],
        [-9.3629e-02,  1.0297e-01],
        [-5.2163e-04, -7.4799e-02],
        [-2.8944e-02, -1.2417e-01]], grad_fn=<AddmmBackward>)

actions给我以下输出

tensor([1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1], dtype=torch.int32)

从上面的两个输出中,如何得到以下结果:

tensor([4.2878e-03, -2.2801e-01, -1.0766e-01, 1.2742e-01, -1.6224e-01,  3.1022e-02, 1.4848e-02,
        -1.4157e-01, -4.2342e-02, -4.1689e-02, -9.3629e-02, -7.4799e-02,, -1.2417e-01], grad_fn=<AddmmBackward>)

更新

这里是如何self.Q实现的:

class LinearDeepQNetwork(nn.Module):
    def __init__(self, lr, n_actions, input_dims):
        super(LinearDeepQNetwork, self).__init__()

        self.fc1 = nn.Linear(*input_dims, 128)
        self.fc2 = nn.Linear(128, n_actions)

        self.optimizer = optim.Adam(self.parameters(), lr=lr)
        self.loss  = nn.MSELoss()
        self.device = T.device('cuda:0' if T.cuda.is_available() else 'cpu')
        self.to(self.device)

    def forward(self, state):
        layer1 = F.relu(self.fc1(state))
        actions = self.fc2(layer1)

        return actions
克德雷拉克

您可以使用:

q_pred[torch.arange(q_pred.size(0)), actions.type(torch.LongTensor)]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从另一个条件创建张量

如何直接在GPU上创建张量,或者在另一个张量的设备上更好地创建张量?

TensorFlow:使用张量索引另一个张量

基于另一个张量求和 Torch 张量

用另一个张量索引张量

在张量流中查找值张量到另一个张量的索引

根据另一个长度创建一个张量

根据来自另一个张量的索引创建新张量并使用它的值进行分配

取一个在另一个张量内的张量元素

根据另一个张量排列一个张量的每个像素

连接(堆叠)Eigen :: Tensors创建另一个张量

创建与另一个张量相同形状的值的重复副本

使用张量的值作为另一个的形状?

将张量转换为另一个

如何将PyTorch张量与另一个张量切片?

通过沿轴重复将张量添加到另一个张量

如何更改割炬张量以与另一个张量结合

Keras张量-使用来自另一个张量的索引获取值

有什么工具可以区分张量和另一个张量吗?

用另一个多维张量索引多维火炬张量

将张量附加到另一个张量的每个元素

从Tensorflow中的另一个张量中选择随机张量

如何将张量插入到 pytorch 中的另一个张量中

根据来自另一个张量的值为张量赋值

以另一个张量为种子在张量流中生成随机序列

计算张量中每个元素相对于另一个张量的最小距离

使用张量流中的另一个索引列表访问张量的元素

如何将张量连接到 pytorch 中的另一个张量列表?

创建一个张量,其中另一个张量在 Pytorch 中具有非零元素