回答編集履歴

3

f

2020/01/12 06:26

投稿

tiitoi
tiitoi

スコア21960

test CHANGED
@@ -47,9 +47,3 @@
47
47
  print("予測したクラス", pred[0].argmax())
48
48
 
49
49
  ```
50
-
51
-
52
-
53
-
54
-
55
- しなければならないというわけではなく、そういうことをしたい場合に関数が容易されている

2

d

2020/01/12 06:26

投稿

tiitoi
tiitoi

スコア21960

test CHANGED
@@ -3,3 +3,53 @@
3
3
 
4
4
 
5
5
  unsqueeze() というサイズ1の軸を追加する関数があるので、それとは逆に、サイズ1の軸を削除する関数があるというのは API 設計としては自然だと思います。
6
+
7
+
8
+
9
+ > そうしてこんな事をしなければならいのでしょうか。
10
+
11
+
12
+
13
+ しなければならないというわけでないです。
14
+
15
+ コードを書いている際にサイズが1の次元を削除したい場合がなんらかの理由が出てきたら、squeeze() があることを思い出して使えばいいというだけです。
16
+
17
+
18
+
19
+ 先程の1枚だけ推論する例の場合、別に squeeze() を使わなくても書けるのでどっちでもいいです。
20
+
21
+
22
+
23
+ squeeze() を使う場合
24
+
25
+
26
+
27
+ ```python
28
+
29
+ pred = model(x) # 推論する。 (1, 1000) (バッチサイズ, クラス数) のテンソル
30
+
31
+ pred = pred.squeeze() # (1000, ) (クラス数,) のテンソル バッチサイズの次元を削除
32
+
33
+ print("予測したクラス", pred.argmax())
34
+
35
+ ```
36
+
37
+
38
+
39
+ squeeze() を使わない場合
40
+
41
+
42
+
43
+ ```python
44
+
45
+ pred = model(x) # 推論する。 (1, 1000)
46
+
47
+ print("予測したクラス", pred[0].argmax())
48
+
49
+ ```
50
+
51
+
52
+
53
+
54
+
55
+ しなければならないというわけではなく、そういうことをしたい場合に関数が容易されている

1

d

2020/01/12 06:25

投稿

tiitoi
tiitoi

スコア21960

test CHANGED
@@ -1,4 +1,4 @@
1
- 例えば、C クラスの画像分類モデルを考えると、サンプル1つを推論した場合、(1, C) のテンソルが出力として得られますが、これを squeeze() して (C,) のテンソルにするとかでしょうか。
1
+ 例えば、C クラスの画像分類モデルを考えると、サンプル1つを推論した場合、形状が (1, C) のテンソルが出力として得られますが、これを squeeze() して 形状 (C,) のテンソルにするとかでしょうか。
2
2
 
3
3
 
4
4