質問編集履歴

12

追加編集

2020/08/27 02:45

投稿

Mimi33mimi
Mimi33mimi

スコア3

test CHANGED
File without changes
test CHANGED
@@ -30,15 +30,19 @@
30
30
 
31
31
 
32
32
 
33
- また、これはこの状況を再現するための実装のJupyter Notebooldです。
33
+ また、これはこの状況を再現するための実装のJupyter Notebookです。
34
34
 
35
35
  https://colab.research.google.com/drive/1qH-gMq_MYq2J-yIsE5IngWixp9wvzrQ9?hl=ja#scrollTo=XRfxGOW3Oybz
36
36
 
37
37
 
38
38
 
39
-
39
+ (モデル更新後)
40
+
40
-
41
+ もしかしたらエポック数が足りないのかもしれないため、更に試してみます。
42
+
43
+
44
+
41
- #Generator
45
+ #Generator(変更前)
42
46
 
43
47
  ```python
44
48
 
@@ -122,7 +126,7 @@
122
126
 
123
127
  ```
124
128
 
125
- #Discriminator
129
+ #Discriminator(変更前)
126
130
 
127
131
  ```python
128
132
 
@@ -202,6 +206,140 @@
202
206
 
203
207
  ```
204
208
 
209
+
210
+
211
+
212
+
213
+ #Generator(変更前)
214
+
215
+ ```python
216
+
217
+ def make_generator_model():
218
+
219
+ model = tf.keras.Sequential()
220
+
221
+ model.add(layers.Dense(32*32*3, use_bias=False, input_shape=(100,)))
222
+
223
+ model.add(layers.LeakyReLU())
224
+
225
+
226
+
227
+ model.add(layers.Reshape((32, 32, 3)))
228
+
229
+ assert model.output_shape == (None, 32, 32, 3) # Note: None is the batch size
230
+
231
+
232
+
233
+ model.add(layers.Conv2DTranspose(32, (4, 4), strides=(2, 2), padding='same', use_bias=False,kernel_initializer=tf.keras.initializers.RandomNormal(mean=0.0, stddev=0.2)))
234
+
235
+ assert model.output_shape == (None, 64, 64, 32)
236
+
237
+ model.add(layers.BatchNormalization())
238
+
239
+ model.add(layers.LeakyReLU())
240
+
241
+
242
+
243
+ model.add(layers.Conv2DTranspose(64, (4, 4), strides=(2, 2), padding='same', use_bias=False,kernel_initializer=tf.keras.initializers.RandomNormal(mean=0.0, stddev=0.2)))
244
+
245
+ assert model.output_shape == (None, 128, 128, 64)
246
+
247
+ model.add(layers.BatchNormalization())
248
+
249
+ model.add(layers.LeakyReLU())
250
+
251
+
252
+
253
+ model.add(layers.Conv2DTranspose(3, (4, 4), strides=(2, 2), padding='same', use_bias=False, activation='tanh'))
254
+
255
+ assert model.output_shape == (None, 256, 256, 3)
256
+
257
+
258
+
259
+ return model
260
+
261
+
262
+
263
+ noise = tf.random.normal([1, 100])
264
+
265
+ generated_image = generator(noise, training=False)
266
+
267
+ generated_image[0]
268
+
269
+
270
+
271
+ plt.imshow(tf.cast((generated_image[0, :, :, :] + 1.0 ) * 127.5,'uint32'))  #matlotlibです
272
+
273
+ ```
274
+
275
+ #Discriminator(変更後)
276
+
277
+ ```python
278
+
279
+ def make_discriminator_model():
280
+
281
+ model = tf.keras.Sequential()
282
+
283
+ model.add(layers.Conv2D(16,(5, 5), strides=(2, 2), padding='same',
284
+
285
+ input_shape=[256, 256, 3]))
286
+
287
+ model.add(layers.LeakyReLU())
288
+
289
+
290
+
291
+ model.add(layers.Conv2D(32, (5, 5), strides=(2, 2), padding='same'))
292
+
293
+ model.add(layers.LeakyReLU())
294
+
295
+
296
+
297
+ model.add(layers.Conv2D(64, (5, 5), strides=(2, 2), padding='same'))
298
+
299
+ model.add(layers.LeakyReLU())
300
+
301
+
302
+
303
+ model.add(layers.Conv2D(128, (5, 5), strides=(2, 2), padding='same'))
304
+
305
+ model.add(layers.LeakyReLU())
306
+
307
+
308
+
309
+ model.add(layers.Conv2D(256, (5, 5), strides=(2, 2), padding='same'))
310
+
311
+ model.add(layers.LeakyReLU())
312
+
313
+
314
+
315
+ model.add(layers.Conv2D(512, (5, 5), strides=(2, 2), padding='same'))
316
+
317
+ model.add(layers.LeakyReLU())
318
+
319
+
320
+
321
+ model.add(layers.Dense(1024))
322
+
323
+ model.add(layers.LeakyReLU())
324
+
325
+
326
+
327
+ model.add(layers.Flatten())
328
+
329
+
330
+
331
+ model.add(layers.Dense(1))
332
+
333
+ # model.add(Activation('sigmoid'))
334
+
335
+
336
+
337
+ return model
338
+
339
+ ```
340
+
341
+
342
+
205
343
  ###学習無しの状態で表示される画像
206
344
 
207
345
  ![イメージ説明](a290f6150d47dd55d29733ea7234a434.png)
@@ -252,6 +390,12 @@
252
390
 
253
391
 
254
392
 
393
+
394
+
395
+
396
+
397
+
398
+
255
399
  ### 試したこと
256
400
 
257
401
 

11

Jupyterの追加

2020/08/27 02:45

投稿

Mimi33mimi
Mimi33mimi

スコア3

test CHANGED
File without changes
test CHANGED
@@ -30,7 +30,9 @@
30
30
 
31
31
 
32
32
 
33
-
33
+ また、これはこの状況を再現するための実装のJupyter Notebooldです。
34
+
35
+ https://colab.research.google.com/drive/1qH-gMq_MYq2J-yIsE5IngWixp9wvzrQ9?hl=ja#scrollTo=XRfxGOW3Oybz
34
36
 
35
37
 
36
38
 

10

問題点をより正確に変更した

2020/08/26 00:16

投稿

Mimi33mimi
Mimi33mimi

スコア3

test CHANGED
@@ -1 +1 @@
1
- KerasのGANでモザイク状の画像しか表示せず学習できません
1
+ KerasのGANで常に同じ画像しか表示せず学習できません
test CHANGED
@@ -30,6 +30,12 @@
30
30
 
31
31
 
32
32
 
33
+
34
+
35
+
36
+
37
+
38
+
33
39
  #Generator
34
40
 
35
41
  ```python
@@ -222,13 +228,11 @@
222
228
 
223
229
 
224
230
 
225
- for i in range(16):
226
-
227
- # for i in range(predictions.shape[0]):
231
+ for i in range(predictions.shape[0]):
228
232
 
229
233
  plt.subplot(4, 4, i+1)
230
234
 
231
- plt.imshow(tf.cast((predictions[i, :, :, :] + 1.0 ) * 127.5,'uint8')) #ここはintに変えました
235
+ plt.imshow(tf.cast((predictions[i] + 1 ) * 0.5 ,dtype='float32'))
232
236
 
233
237
  plt.axis('off')
234
238
 

9

更に自分で工夫を加えたが解決しなかった

2020/08/25 23:24

投稿

Mimi33mimi
Mimi33mimi

スコア3

test CHANGED
@@ -1 +1 @@
1
- KerasのGANでGeneratorがモザイク状の画像しか表示せず学習できません
1
+ KerasのGANでモザイク状の画像しか表示せず学習できません
test CHANGED
@@ -2,17 +2,23 @@
2
2
 
3
3
 
4
4
 
5
+ 何度も質問内容を変更して申し訳ありません。
6
+
7
+
8
+
9
+
10
+
5
11
  皆様こんにちは。Tensorflow 2.0(Keras)のチュートリアルを参考にして画像生成を試みています。
6
12
 
7
13
  256 * 256のRGB画像でのDCGANで画像生成をしていますが、Trainingしてもほとんど更新されず、16種類画像を表示しても同じ画像ばかり現れて新しい画像が生成できません。
8
14
 
9
15
 
10
16
 
11
- https://www.tensorflow.org/tutorials/generative/dcgan?hl=ja のMNISTのGANを参考にしています。この場合、出力層などを変えながらciferAの画像を学習することができたため、Generatorの問題だと考えてい
17
+ https://www.tensorflow.org/tutorials/generative/dcgan?hl=ja のMNISTのGANを参考にしています。この場合、出力層などを変えながらciferAの画像(ただし入出力画像の出力チャンネル3にした)を学習することができたため、原因が分かりせん
12
-
13
-
14
-
18
+
19
+
20
+
15
- 問題があるところは、Generatorと画像表示の部分だと思うのですが、その部分だけのコードだけで解決できるでしょうか。
21
+ 問題があるところは、モデルと画像表示の部分だと思うのですが、その部分だけのコードだけで解決できるでしょうか。
16
22
 
17
23
  コードが十分でなかった場合は追記いたします。よろしくおねがいします。
18
24
 
@@ -104,7 +110,7 @@
104
110
 
105
111
 
106
112
 
107
- plt.imshow(generated_image[0] * 0.5 + 0.5) #matlotlibです
113
+ plt.imshow(tf.cast((generated_image[0, :, :, :] + 1.0 ) * 127.5,'uint8')) #matlotlibです
108
114
 
109
115
  ```
110
116
 
@@ -164,31 +170,33 @@
164
170
 
165
171
  model.add(layers.BatchNormalization())
166
172
 
173
+
174
+
167
-
175
+ model.add(layers.Flatten())
168
176
 
169
177
  model.add(layers.Dense(1024))
170
178
 
171
179
  model.add(layers.LeakyReLU())
172
180
 
181
+ model.add(Activation('relu'))
182
+
183
+
184
+
185
+
186
+
187
+ model.add(layers.Dense(1))
188
+
173
189
  model.add(Activation('sigmoid'))
174
190
 
175
191
 
176
192
 
177
- model.add(layers.Flatten())
178
-
179
- model.add(layers.Dense(1))
180
-
181
-
182
-
183
-
184
-
185
193
  return model
186
194
 
187
195
  ```
188
196
 
189
197
  ###学習無しの状態で表示される画像
190
198
 
191
- ![イメージ説明](f9450a43b1add821672c8124d714533f.png)
199
+ ![イメージ説明](a290f6150d47dd55d29733ea7234a434.png)
192
200
 
193
201
 
194
202
 
@@ -214,11 +222,13 @@
214
222
 
215
223
 
216
224
 
225
+ for i in range(16):
226
+
217
- for i in range(predictions.shape[0]):
227
+ # for i in range(predictions.shape[0]):
218
228
 
219
229
  plt.subplot(4, 4, i+1)
220
230
 
221
- plt.imshow((predictions[i] * 0.5 + 0.5)) #ここは投稿の後から更しました
231
+ plt.imshow(tf.cast((predictions[i, :, :, :] + 1.0 ) * 127.5,'uint8')) #ここはintにました
222
232
 
223
233
  plt.axis('off')
224
234
 
@@ -242,7 +252,7 @@
242
252
 
243
253
  重みの初期値の変更、Generatorの出力のバイアスのあり・なしの変更、
244
254
 
245
- kernel_initializer='random_normal'
255
+ kernel_initializer='random_normal'、Discriminatorの変更
246
256
 
247
257
  ### 補足情報(FW/ツールのバージョンなど)
248
258
 

8

質問文の変更

2020/08/25 14:02

投稿

Mimi33mimi
Mimi33mimi

スコア3

test CHANGED
@@ -1 +1 @@
1
- GANGeneratorがモザイク状の画像しか表示せず学習できません
1
+ KerasのGANGeneratorがモザイク状の画像しか表示せず学習できません
test CHANGED
@@ -4,11 +4,13 @@
4
4
 
5
5
  皆様こんにちは。Tensorflow 2.0(Keras)のチュートリアルを参考にして画像生成を試みています。
6
6
 
7
- 256 * 256のRGB画像でのDCGANで画像生成をしていますが、Generatorの出力のテンソルのそぞれの値が1e-06など小さな数字になます。目的は1e-02などの大きさのテンソルがGeneratorから出力さ、学習進むこと
7
+ 256 * 256のRGB画像でのDCGANで画像生成をしていますが、Trainingしてもほとんど更新さず、16種類画像を表示しても同じ画像ばかて新しい画像生成きません
8
-
9
- 今の状態ではTrainingしてもほとんど更新されず、ノイズのみで新しい画像が生成できません。
8
+
10
-
9
+
10
+
11
- https://www.tensorflow.org/tutorials/generative/dcgan?hl=ja のMNISTのGANを参考にしています。
11
+ https://www.tensorflow.org/tutorials/generative/dcgan?hl=ja のMNISTのGANを参考にしています。この場合、出力層などを変えながらciferAの画像を学習することができたため、Generatorの問題だと考えています。
12
+
13
+
12
14
 
13
15
  問題があるところは、Generatorと画像表示の部分だと思うのですが、その部分だけのコードだけで解決できるでしょうか。
14
16
 
@@ -16,6 +18,12 @@
16
18
 
17
19
 
18
20
 
21
+ GeneratorとDiscriminatorだけですが、この論文の実装をイメージしています。
22
+
23
+ https://www.researchgate.net/publication/331200586_Bidirectional_Face_Aging_Synthesis_Based_on_Improved_Deep_Convolutional_Generative_Adversarial_Networks
24
+
25
+
26
+
19
27
  #Generator
20
28
 
21
29
  ```python
@@ -32,194 +40,196 @@
32
40
 
33
41
  model.add(layers.Reshape((4, 4, 1024)))
34
42
 
43
+ model.add(layers.Conv2DTranspose(1024, (5, 5), strides=(1, 1), padding='same', use_bias=False,activation='relu',kernel_initializer='random_normal'))
44
+
45
+ assert model.output_shape == (None, 4, 4, 1024)
46
+
47
+
48
+
49
+ model.add(layers.Conv2DTranspose(512, (5, 5), strides=(2, 2), padding='same'))
50
+
51
+ model.add(layers.ReLU())
52
+
53
+
54
+
55
+ model.add(layers.Conv2DTranspose(256, (5, 5), strides=(2, 2), padding='same'))
56
+
57
+ model.add(layers.ReLU())
58
+
59
+
60
+
61
+
62
+
63
+ model.add(layers.Conv2DTranspose(128, (5, 5), strides=(2, 2), padding='same'))
64
+
65
+ model.add(layers.ReLU())
66
+
67
+
68
+
69
+ model.add(layers.Conv2DTranspose(64, (5, 5), strides=(2, 2), padding='same'))
70
+
71
+ model.add(layers.ReLU())
72
+
73
+
74
+
75
+ model.add(layers.Conv2DTranspose(32, (5, 5), strides=(2, 2), padding='same'))
76
+
77
+ model.add(layers.ReLU())
78
+
79
+ assert model.output_shape == (None, 128, 128, 32)
80
+
81
+
82
+
83
+ model.add(layers.Conv2DTranspose(3, (5, 5), strides=(2, 2), padding='same'))
84
+
85
+ model.add(Activation('tanh'))
86
+
87
+ assert model.output_shape == (None, 256, 256, 3)
88
+
89
+
90
+
91
+ return model
92
+
93
+
94
+
95
+ generator = make_generator_model()
96
+
97
+
98
+
99
+ noise = tf.random.normal([1, 100])
100
+
101
+ generated_image = generator(noise, training=False)
102
+
103
+ generated_image[0]
104
+
105
+
106
+
107
+ plt.imshow(generated_image[0] * 0.5 + 0.5) #matlotlibです
108
+
109
+ ```
110
+
111
+ #Discriminator
112
+
113
+ ```python
114
+
115
+ def make_discriminator_model():
116
+
117
+ model = tf.keras.Sequential()
118
+
119
+ model.add(layers.Conv2D(16, (5, 5), strides=(2, 2), padding='same',
120
+
121
+ input_shape=[256, 256, 3]))
122
+
123
+ model.add(layers.LeakyReLU())
124
+
125
+ model.add(layers.BatchNormalization())
126
+
127
+
128
+
129
+ model.add(layers.Conv2D(32, (5, 5), strides=(2, 2), padding='same'))
130
+
131
+ model.add(layers.LeakyReLU())
132
+
133
+ model.add(layers.BatchNormalization())
134
+
135
+
136
+
137
+ model.add(layers.Conv2D(64, (5, 5), strides=(2, 2), padding='same'))
138
+
139
+ model.add(layers.LeakyReLU())
140
+
141
+ model.add(layers.BatchNormalization())
142
+
143
+
144
+
145
+ model.add(layers.Conv2D(128, (5, 5), strides=(2, 2), padding='same'))
146
+
147
+ model.add(layers.LeakyReLU())
148
+
149
+ model.add(layers.BatchNormalization())
150
+
151
+
152
+
153
+ model.add(layers.Conv2D(256, (5, 5), strides=(2, 2), padding='same'))
154
+
155
+ model.add(layers.LeakyReLU())
156
+
157
+ model.add(layers.BatchNormalization())
158
+
159
+
160
+
161
+ model.add(layers.Conv2D(512, (5, 5), strides=(2, 2), padding='same'))
162
+
163
+ model.add(layers.LeakyReLU())
164
+
165
+ model.add(layers.BatchNormalization())
166
+
35
167
 
36
168
 
37
-
38
-
39
- model.add(layers.Conv2DTranspose(512, (5, 5), strides=(2, 2), padding='same'))
169
+ model.add(layers.Dense(1024))
40
-
170
+
41
- model.add(layers.ReLU())
171
+ model.add(layers.LeakyReLU())
42
-
43
-
44
-
45
- model.add(layers.Conv2DTranspose(256, (5, 5), strides=(2, 2), padding='same'))
172
+
46
-
47
- model.add(layers.ReLU())
48
-
49
-
50
-
51
-
52
-
53
- model.add(layers.Conv2DTranspose(128, (5, 5), strides=(2, 2), padding='same'))
54
-
55
- model.add(layers.ReLU())
56
-
57
-
58
-
59
- model.add(layers.Conv2DTranspose(64, (5, 5), strides=(2, 2), padding='same'))
60
-
61
- model.add(layers.ReLU())
62
-
63
-
64
-
65
- model.add(layers.Conv2DTranspose(32, (5, 5), strides=(2, 2), padding='same'))
66
-
67
- model.add(layers.ReLU())
68
-
69
- assert model.output_shape == (None, 128, 128, 32)
70
-
71
-
72
-
73
- model.add(layers.Conv2DTranspose(3, (5, 5), strides=(2, 2), padding='same'))
74
-
75
- model.add(Activation('tanh'))
173
+ model.add(Activation('sigmoid'))
76
-
174
+
175
+
176
+
77
- assert model.output_shape == (None, 256, 256, 3)
177
+ model.add(layers.Flatten())
178
+
179
+ model.add(layers.Dense(1))
180
+
181
+
78
182
 
79
183
 
80
184
 
81
185
  return model
82
186
 
83
-
84
-
85
- generator = make_generator_model()
86
-
87
-
88
-
89
- noise = tf.random.normal([1, 100])
90
-
91
- generated_image = generator(noise, training=False)
92
-
93
- generated_image[0]
94
-
95
-
96
-
97
- plt.imshow(generated_image[0] * 0.5 + 0.5) #matlotlibです
98
-
99
187
  ```
100
188
 
101
- #Discriminator
189
+ ###学習無しの状態で表示される画像
190
+
191
+ ![イメージ説明](f9450a43b1add821672c8124d714533f.png)
192
+
193
+
194
+
195
+
196
+
197
+
198
+
199
+ ### こちらは、先述の公式MNIST実装のコードをほとんどコピーした、カラー画像が表示できるはずのコードですが、ほとんど同じようなほぼ一色の画像が表示されます。
102
200
 
103
201
  ```python
104
202
 
105
- def make_discriminator_model():
203
+ def generate_and_save_images(model, epoch, test_input):
204
+
106
-
205
+ # Notice `training` is set to False.
206
+
207
+ # This is so all layers run in inference mode (batchnorm).
208
+
209
+ predictions = model(test_input, training=False)
210
+
211
+
212
+
107
- model = tf.keras.Sequential()
213
+ fig = plt.figure(figsize=(4,4))
108
-
214
+
215
+
216
+
109
- model.add(layers.Conv2D(16, (5, 5), strides=(2, 2), padding='same',
217
+ for i in range(predictions.shape[0]):
110
-
218
+
111
- input_shape=[256, 256, 3]))
219
+ plt.subplot(4, 4, i+1)
112
-
113
- model.add(layers.LeakyReLU())
220
+
114
-
115
- model.add(layers.BatchNormalization())
116
-
117
-
118
-
119
- model.add(layers.Conv2D(32, (5, 5), strides=(2, 2), padding='same'))
221
+ plt.imshow((predictions[i] * 0.5 + 0.5)) #ここは投稿の後から変更しました。
120
-
121
- model.add(layers.LeakyReLU())
222
+
122
-
123
- model.add(layers.BatchNormalization())
124
-
125
-
126
-
127
- model.add(layers.Conv2D(64, (5, 5), strides=(2, 2), padding='same'))
128
-
129
- model.add(layers.LeakyReLU())
130
-
131
- model.add(layers.BatchNormalization())
132
-
133
-
134
-
135
- model.add(layers.Conv2D(128, (5, 5), strides=(2, 2), padding='same'))
136
-
137
- model.add(layers.LeakyReLU())
138
-
139
- model.add(layers.BatchNormalization())
140
-
141
-
142
-
143
- model.add(layers.Conv2D(256, (5, 5), strides=(2, 2), padding='same'))
144
-
145
- model.add(layers.LeakyReLU())
146
-
147
- model.add(layers.BatchNormalization())
148
-
149
-
150
-
151
- model.add(layers.Conv2D(512, (5, 5), strides=(2, 2), padding='same'))
152
-
153
- model.add(layers.LeakyReLU())
154
-
155
- model.add(layers.BatchNormalization())
156
-
157
-
158
-
159
- model.add(layers.Dense(1024))
160
-
161
- model.add(layers.LeakyReLU())
162
-
163
- model.add(Activation('sigmoid'))
223
+ plt.axis('off')
164
-
165
-
166
-
224
+
225
+
226
+
167
- model.add(layers.Flatten())
227
+ plt.savefig('image_at_epoch_{:04d}.png'.format(epoch))
168
-
169
- model.add(layers.Dense(1))
228
+
170
-
171
-
172
-
173
-
174
-
175
- return model
229
+ plt.show()
176
230
 
177
231
  ```
178
232
 
179
- ###学習無しの状態で表示される画像
180
-
181
- ![イメージ説明](f9450a43b1add821672c8124d714533f.png)
182
-
183
-
184
-
185
-
186
-
187
-
188
-
189
- ### こちらは、先述の公式MNIST実装のコードをほとんどコピーした、カラー画像が表示できるはずのコードですが、ほとんど同じようなほぼ一色の画像が表示されます。
190
-
191
- ```python
192
-
193
- def generate_and_save_images(model, epoch, test_input):
194
-
195
- # Notice `training` is set to False.
196
-
197
- # This is so all layers run in inference mode (batchnorm).
198
-
199
- predictions = model(test_input, training=False)
200
-
201
-
202
-
203
- fig = plt.figure(figsize=(4,4))
204
-
205
-
206
-
207
- for i in range(predictions.shape[0]):
208
-
209
- plt.subplot(4, 4, i+1)
210
-
211
- plt.imshow((predictions[i] * 0.5 + 0.5)) #ここは投稿の後から変更しました。
212
-
213
- plt.axis('off')
214
-
215
-
216
-
217
- plt.savefig('image_at_epoch_{:04d}.png'.format(epoch))
218
-
219
- plt.show()
220
-
221
- ```
222
-
223
233
  ###結果的に表示された画像(140エポック)
224
234
 
225
235
  ![イメージ説明](65823c15d5250a2aa24cfcfc59aaa91b.png)

7

Discriminatorも追加

2020/08/25 05:44

投稿

Mimi33mimi
Mimi33mimi

スコア3

test CHANGED
File without changes
test CHANGED
@@ -98,7 +98,83 @@
98
98
 
99
99
  ```
100
100
 
101
-
101
+ #Discriminator
102
+
103
+ ```python
104
+
105
+ def make_discriminator_model():
106
+
107
+ model = tf.keras.Sequential()
108
+
109
+ model.add(layers.Conv2D(16, (5, 5), strides=(2, 2), padding='same',
110
+
111
+ input_shape=[256, 256, 3]))
112
+
113
+ model.add(layers.LeakyReLU())
114
+
115
+ model.add(layers.BatchNormalization())
116
+
117
+
118
+
119
+ model.add(layers.Conv2D(32, (5, 5), strides=(2, 2), padding='same'))
120
+
121
+ model.add(layers.LeakyReLU())
122
+
123
+ model.add(layers.BatchNormalization())
124
+
125
+
126
+
127
+ model.add(layers.Conv2D(64, (5, 5), strides=(2, 2), padding='same'))
128
+
129
+ model.add(layers.LeakyReLU())
130
+
131
+ model.add(layers.BatchNormalization())
132
+
133
+
134
+
135
+ model.add(layers.Conv2D(128, (5, 5), strides=(2, 2), padding='same'))
136
+
137
+ model.add(layers.LeakyReLU())
138
+
139
+ model.add(layers.BatchNormalization())
140
+
141
+
142
+
143
+ model.add(layers.Conv2D(256, (5, 5), strides=(2, 2), padding='same'))
144
+
145
+ model.add(layers.LeakyReLU())
146
+
147
+ model.add(layers.BatchNormalization())
148
+
149
+
150
+
151
+ model.add(layers.Conv2D(512, (5, 5), strides=(2, 2), padding='same'))
152
+
153
+ model.add(layers.LeakyReLU())
154
+
155
+ model.add(layers.BatchNormalization())
156
+
157
+
158
+
159
+ model.add(layers.Dense(1024))
160
+
161
+ model.add(layers.LeakyReLU())
162
+
163
+ model.add(Activation('sigmoid'))
164
+
165
+
166
+
167
+ model.add(layers.Flatten())
168
+
169
+ model.add(layers.Dense(1))
170
+
171
+
172
+
173
+
174
+
175
+ return model
176
+
177
+ ```
102
178
 
103
179
  ###学習無しの状態で表示される画像
104
180
 

6

実際の試行に近づけた

2020/08/24 20:23

投稿

Mimi33mimi
Mimi33mimi

スコア3

test CHANGED
File without changes
test CHANGED
@@ -94,31 +94,19 @@
94
94
 
95
95
 
96
96
 
97
- plt.imshow(tf.cast(255 * (generated_image[0] / 2 + 1),'uint8')) #matlotlibです
97
+ plt.imshow(generated_image[0] * 0.5 + 0.5) #matlotlibです
98
98
 
99
99
  ```
100
100
 
101
101
 
102
102
 
103
- ###出力を100倍て結果的に出力されるテンソル(一部)
103
+ ###学習無の状態で表示される画像
104
104
 
105
- plt.imshow(tf.cast(255 * (generated_image[0] * 100 / 2 + 1),'uint8'))
106
-
107
- <tf.Tensor: shape=(256, 256, 3), dtype=float32, numpy=
108
-
109
- array([[[ 1.57410329e-06, -3.40866131e-06, 1.24176722e-06],
110
-
111
- [-2.41837824e-06, 4.55960935e-06, -5.75053673e-06],
105
+ ![イメージ説明](f9450a43b1add821672c8124d714533f.png)
112
-
113
- [ 8.01241185e-06, -7.79011862e-06, -3.61239472e-06],
114
106
 
115
107
 
116
108
 
117
109
 
118
-
119
- ###この状態ではランダムノイズらしきものが表示されるため、問題はこれ以降かもしれません。
120
-
121
- ![イメージ説明](856e00de30841a603784324987876570.png)
122
110
 
123
111
 
124
112
 
@@ -156,9 +144,9 @@
156
144
 
157
145
  ```
158
146
 
159
- ###結果的に表示された画像
147
+ ###結果的に表示された画像(140エポック)
160
148
 
161
- ![![ある程度エポックを繰り返した結果](5cec83eb4e5874c88096b558fa393d46.png)
149
+ ![イメージ説明](65823c15d5250a2aa24cfcfc59aaa91b.png)
162
150
 
163
151
 
164
152
 

5

初投稿の後の修正

2020/08/24 19:58

投稿

Mimi33mimi
Mimi33mimi

スコア3

test CHANGED
@@ -1 +1 @@
1
- GANのGeneratorの出力されるテンソルが小さいためか学習できません
1
+ GANのGeneratorがモザイク状画像し表示せずに学習できません
test CHANGED
@@ -144,7 +144,7 @@
144
144
 
145
145
  plt.subplot(4, 4, i+1)
146
146
 
147
- plt.imshow(tf.cast(255.0 * (predictions[i]* 100/ 2.0 + 1),'uint8')) #generatorの数値が少数のため、jpg画像にするために大きさを合わせるためここ変更しました。
147
+ plt.imshow((predictions[i] * 0.5 + 0.5)) #ここは投稿の後から変更しました。
148
148
 
149
149
  plt.axis('off')
150
150
 
@@ -168,7 +168,7 @@
168
168
 
169
169
  重みの初期値の変更、Generatorの出力のバイアスのあり・なしの変更、
170
170
 
171
-
171
+ kernel_initializer='random_normal'
172
172
 
173
173
  ### 補足情報(FW/ツールのバージョンなど)
174
174
 

4

100倍した時のテンソル

2020/08/24 14:01

投稿

Mimi33mimi
Mimi33mimi

スコア3

test CHANGED
File without changes
test CHANGED
@@ -100,7 +100,9 @@
100
100
 
101
101
 
102
102
 
103
- ###結果的に出力されるテンソル(一部)
103
+ ###出力を100倍して結果的に出力されるテンソル(一部)
104
+
105
+ plt.imshow(tf.cast(255 * (generated_image[0] * 100 / 2 + 1),'uint8'))
104
106
 
105
107
  <tf.Tensor: shape=(256, 256, 3), dtype=float32, numpy=
106
108
 

3

ランダムノイズの表示方法の追加

2020/08/24 03:28

投稿

Mimi33mimi
Mimi33mimi

スコア3

test CHANGED
File without changes
test CHANGED
@@ -92,6 +92,10 @@
92
92
 
93
93
  generated_image[0]
94
94
 
95
+
96
+
97
+ plt.imshow(tf.cast(255 * (generated_image[0] / 2 + 1),'uint8')) #matlotlibです
98
+
95
99
  ```
96
100
 
97
101
 

2

tensorflow 2.0とランダムノイズらしい画像

2020/08/24 02:46

投稿

Mimi33mimi
Mimi33mimi

スコア3

test CHANGED
File without changes
test CHANGED
@@ -108,6 +108,14 @@
108
108
 
109
109
 
110
110
 
111
+
112
+
113
+ ###この状態ではランダムノイズらしきものが表示されるため、問題はこれ以降かもしれません。
114
+
115
+ ![イメージ説明](856e00de30841a603784324987876570.png)
116
+
117
+
118
+
111
119
  ### こちらは、先述の公式MNIST実装のコードをほとんどコピーした、カラー画像が表示できるはずのコードですが、ほとんど同じようなほぼ一色の画像が表示されます。
112
120
 
113
121
  ```python
@@ -160,4 +168,4 @@
160
168
 
161
169
 
162
170
 
163
- ColaboratoryのGPUで実行しています。
171
+ tensorflow2.0とKeras、ColaboratoryのGPUで実行しています。

1

気になっていることがKerasであることの追加

2020/08/24 02:45

投稿

Mimi33mimi
Mimi33mimi

スコア3

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- 皆様こんにちは。Tensorflow 2.0のチュートリアルを参考にして画像生成を試みています。
5
+ 皆様こんにちは。Tensorflow 2.0(Keras)のチュートリアルを参考にして画像生成を試みています。
6
6
 
7
7
  256 * 256のRGB画像でのDCGANで画像生成をしていますが、Generatorの出力のテンソルのそれぞれの値が1e-06など小さな数字になります。目的は1e-02などの大きさのテンソルがGeneratorから出力され、学習が進むことです。
8
8