teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

f

2020/01/12 06:26

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -22,7 +22,4 @@
22
22
  ```python
23
23
  pred = model(x) # 推論する。 (1, 1000)
24
24
  print("予測したクラス", pred[0].argmax())
25
- ```
25
+ ```
26
-
27
-
28
- しなければならないというわけではなく、そういうことをしたい場合に関数が容易されている

2

d

2020/01/12 06:26

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -1,3 +1,28 @@
1
1
  例えば、C クラスの画像分類モデルを考えると、サンプル1つを推論した場合、形状が (1, C) のテンソルが出力として得られますが、これを squeeze() して 形状 (C,) のテンソルにするとかでしょうか。
2
2
 
3
- unsqueeze() というサイズ1の軸を追加する関数があるので、それとは逆に、サイズ1の軸を削除する関数があるというのは API 設計としては自然だと思います。
3
+ unsqueeze() というサイズ1の軸を追加する関数があるので、それとは逆に、サイズ1の軸を削除する関数があるというのは API 設計としては自然だと思います。
4
+
5
+ > そうしてこんな事をしなければならいのでしょうか。
6
+
7
+ しなければならないというわけでないです。
8
+ コードを書いている際にサイズが1の次元を削除したい場合がなんらかの理由が出てきたら、squeeze() があることを思い出して使えばいいというだけです。
9
+
10
+ 先程の1枚だけ推論する例の場合、別に squeeze() を使わなくても書けるのでどっちでもいいです。
11
+
12
+ squeeze() を使う場合
13
+
14
+ ```python
15
+ pred = model(x) # 推論する。 (1, 1000) (バッチサイズ, クラス数) のテンソル
16
+ pred = pred.squeeze() # (1000, ) (クラス数,) のテンソル バッチサイズの次元を削除
17
+ print("予測したクラス", pred.argmax())
18
+ ```
19
+
20
+ squeeze() を使わない場合
21
+
22
+ ```python
23
+ pred = model(x) # 推論する。 (1, 1000)
24
+ print("予測したクラス", pred[0].argmax())
25
+ ```
26
+
27
+
28
+ しなければならないというわけではなく、そういうことをしたい場合に関数が容易されている

1

d

2020/01/12 06:25

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -1,3 +1,3 @@
1
- 例えば、C クラスの画像分類モデルを考えると、サンプル1つを推論した場合、(1, C) のテンソルが出力として得られますが、これを squeeze() して (C,) のテンソルにするとかでしょうか。
1
+ 例えば、C クラスの画像分類モデルを考えると、サンプル1つを推論した場合、形状が (1, C) のテンソルが出力として得られますが、これを squeeze() して 形状 (C,) のテンソルにするとかでしょうか。
2
2
 
3
3
  unsqueeze() というサイズ1の軸を追加する関数があるので、それとは逆に、サイズ1の軸を削除する関数があるというのは API 設計としては自然だと思います。