回答編集履歴
3
f
test
CHANGED
@@ -47,9 +47,3 @@
|
|
47
47
|
print("予測したクラス", pred[0].argmax())
|
48
48
|
|
49
49
|
```
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
しなければならないというわけではなく、そういうことをしたい場合に関数が容易されている
|
2
d
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
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
|
|