質問編集履歴

5

解決策

2019/06/07 00:59

投稿

physics303
physics303

スコア89

test CHANGED
File without changes
test CHANGED
@@ -209,3 +209,27 @@
209
209
 
210
210
 
211
211
  optimizerの問題ではないかとの指摘を受けて、Adam,AdaDelta,SGDで試しましたが結果は変わらず…
212
+
213
+
214
+
215
+ ### 解決策?
216
+
217
+
218
+
219
+ passerbyさんに言われた通り、
220
+
221
+ ```python3
222
+
223
+ rec_loss += F.mean_squared_error(x, self.decode(z)) / k
224
+
225
+ ```
226
+
227
+
228
+
229
+ ```python3
230
+
231
+ rec_loss += F.mean(F.sum((x - self.decode(z)) ** 2, axis=1))
232
+
233
+ ```
234
+
235
+ に変えるとうまくいきます。でもなぜだ…?

4

k

2019/06/07 00:59

投稿

physics303
physics303

スコア89

test CHANGED
File without changes
test CHANGED
@@ -180,7 +180,7 @@
180
180
 
181
181
 
182
182
 
183
- ### 追記
183
+ ### 追記1
184
184
 
185
185
 
186
186
 
@@ -189,3 +189,23 @@
189
189
 
190
190
 
191
191
  MNSITは28×28の画像なので、MSEを用いる際には28×28×F.mean_squared_error(x, decode(z))とすれば良いと思い、試してみましたが結果は変わりませんでした。
192
+
193
+
194
+
195
+ ### 追記2
196
+
197
+
198
+
199
+ chainerでMSEを使ったVAEの実装を行っているコードを見つけました。
200
+
201
+ (https://github.com/maguro27/VAE-CIFAR10_chainer/blob/master/VAE_CIFAR10.ipynb)
202
+
203
+ なぜ、このコードでは動いて、私の上のコードでは学習がうまくいかないのでしょうか。
204
+
205
+
206
+
207
+ ### 追記3
208
+
209
+
210
+
211
+ optimizerの問題ではないかとの指摘を受けて、Adam,AdaDelta,SGDで試しましたが結果は変わらず…

3

やったことを書き加えた。

2019/06/04 01:32

投稿

physics303
physics303

スコア89

test CHANGED
File without changes
test CHANGED
@@ -177,3 +177,15 @@
177
177
 
178
178
 
179
179
  これはなぜでしょうか。
180
+
181
+
182
+
183
+ ### 追記
184
+
185
+
186
+
187
+ bernoulli_nllはデフォルトではすべて合計する一方で、mean_squared_errorは二乗誤差をバッチとピクセルの両方で平均するので、再構成項が過小評価されてしまっているかもしれないと考えました。
188
+
189
+
190
+
191
+ MNSITは28×28の画像なので、MSEを用いる際には28×28×F.mean_squared_error(x, decode(z))とすれば良いと思い、試してみましたが結果は変わりませんでした。

2

k

2019/06/03 08:56

投稿

physics303
physics303

スコア89

test CHANGED
File without changes
test CHANGED
@@ -160,7 +160,7 @@
160
160
 
161
161
  ```python3
162
162
 
163
- rec_loss += F.mean_squared_error(x, self.decode(z)) \ k
163
+ rec_loss += F.mean_squared_error(x, self.decode(z)) / k
164
164
 
165
165
  ```
166
166
 

1

誤字訂正

2019/06/03 07:16

投稿

physics303
physics303

スコア89

test CHANGED
File without changes
test CHANGED
@@ -154,7 +154,7 @@
154
154
 
155
155
 
156
156
 
157
- ところで、疑問なのですが、rec_lossは再構成誤差なので、素朴には平均二乗誤差をつかうのが素朴だと思われます。そこでrec_lossの部分を
157
+ ところで、疑問なのですが、rec_lossは再構成誤差なので、素朴には平均二乗誤差をつかうのが自然だと思われます。そこでrec_lossの部分を
158
158
 
159
159
 
160
160
 
@@ -166,7 +166,7 @@
166
166
 
167
167
 
168
168
 
169
- と書き換えて(ほかの条件は全部そのままで)実験すると
169
+ と書き換えほかの条件は全部そのままで(他の部分は一切書き換えずに実験すると
170
170
 
171
171
  1. rec_lossが2epoch目以降、全く減少しない。
172
172