回答編集履歴

1

動作確認コードを追加

2020/01/16 14:06

投稿

magichan
magichan

スコア15898

test CHANGED
@@ -71,3 +71,99 @@
71
71
 
72
72
 
73
73
  ただ、このように学習前に前処理として画像を増やしておくと、メモリを圧迫しますので、通常は``model.fit_generator()`` を使って学習時にリアルタイムで新規の画像を生成する方法が一般的ではないでしょうか。
74
+
75
+
76
+
77
+ ---
78
+
79
+
80
+
81
+ **【動作確認】**
82
+
83
+
84
+
85
+ 確認コード
86
+
87
+ ```Python
88
+
89
+ from keras.preprocessing.image import ImageDataGenerator
90
+
91
+ import numpy as np
92
+
93
+
94
+
95
+ # ダミーデータを生成
96
+
97
+ X_train = np.random.randint(0, 255, (4200, 1, 28, 28))
98
+
99
+ y_train = np.random.randint(0, 1, (4200, 15))
100
+
101
+
102
+
103
+ datagen = ImageDataGenerator(
104
+
105
+ rotation_range=15,
106
+
107
+ width_shift_range=0.1,
108
+
109
+ height_shift_range=0.1,
110
+
111
+ shear_range=0.2,
112
+
113
+ zoom_range=[0.4, 0],
114
+
115
+ #horizontal_flip=False,
116
+
117
+ #vertical_flip=False
118
+
119
+ )
120
+
121
+ #データ拡張実施
122
+
123
+ X_gen = datagen.flow(X_train, y_train, batch_size=4200)
124
+
125
+
126
+
127
+ for _ in range(10):
128
+
129
+ #データ生成
130
+
131
+ X_gen_new, y_gen_new = X_gen.__next__()
132
+
133
+ #データを結合
134
+
135
+ X_train = np.concatenate([X_train, X_gen_new])
136
+
137
+ y_train = np.concatenate([y_train, y_gen_new])
138
+
139
+ #データサイズを表示
140
+
141
+ print(X_train.shape, y_train.shape)
142
+
143
+ ```
144
+
145
+ 結果
146
+
147
+ ```Text
148
+
149
+ (8400, 1, 28, 28) (8400, 15)
150
+
151
+ (12600, 1, 28, 28) (12600, 15)
152
+
153
+ (16800, 1, 28, 28) (16800, 15)
154
+
155
+ (21000, 1, 28, 28) (21000, 15)
156
+
157
+ (25200, 1, 28, 28) (25200, 15)
158
+
159
+ (29400, 1, 28, 28) (29400, 15)
160
+
161
+ (33600, 1, 28, 28) (33600, 15)
162
+
163
+ (37800, 1, 28, 28) (37800, 15)
164
+
165
+ (42000, 1, 28, 28) (42000, 15)
166
+
167
+ (46200, 1, 28, 28) (46200, 15)
168
+
169
+ ```