Python - AI - Tensor - 階を増やす

 クラウディア
1. 概要
2. 代入

1. 概要

 急に、わたしがやりたいことの話になります。  本ページは、下記のサイトを参考にさせていただきました。
PyTorch の Tensor の要素の値を取得: item()

2. 代入

 一定の値が入っている「tensor」があって。  それを一定の形式の次元・個数にしたいのですが・・・。  「torch.nn.functional.interpolate」を使っちゃうと、大きさは思い通りになるのですが、必要としない値になっちゃう。  あいているところは、0 でいいんだな。  で、およそこういうソースを書いてみました。

import os
import torch

x = torch.tensor([[[ 0.0, 1.0 ], [ 2.0, 3.0 ], [ 4.0, 5.0 ]]])
nop, sizei, sizej = x.shape

print(x.shape)
print(x, os.linesep)

y = torch.zeros(1, 4, 4)

for i in range(sizei):
  for j in range(sizej):
    y[0, i, j] = x[0, i, j]

print(y.shape)
print(y)
 実行すると、下記の出力結果が得られます。

torch.Size([1, 3, 2])
tensor([[[0., 1.],
         [2., 3.],
         [4., 5.]]])

torch.Size([1, 4, 4])
tensor([[[0., 1., 0., 0.],
         [2., 3., 0., 0.],
         [4., 5., 0., 0.],
         [0., 0., 0., 0.]]])
 思い通りになったじょ。  もっとスマートなやり方があると思うのですが、意図通りの動かし方は、今んとここれしかできないのだ。