回答編集履歴
3
f
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
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
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 設計としては自然だと思います。
|