質問編集履歴

4

コードの修正

2017/06/05 11:39

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -374,7 +374,7 @@
374
374
 
375
375
  image_value = np.array(Image.open(directory + "/" + it))
376
376
 
377
- image_value = image_value.reshape(1, image_value.size)
377
+ image_value = image_value.reshape(image_value.size)
378
378
 
379
379
  append = image_list.append
380
380
 

3

コードの追加

2017/06/05 11:39

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -336,10 +336,60 @@
336
336
 
337
337
  コメントに書くとインデントがずれる為、此方に書かせて頂きます
338
338
 
339
-
339
+ 回答を参考に書いたコードです
340
-
340
+
341
+
342
+
341
- ```python
343
+ ```python
344
+
342
-
345
+ from PIL import Image
346
+
347
+ import os
348
+
349
+ import numpy as np
350
+
351
+ import pickle
352
+
353
+
354
+
355
+ directory = "ディレクトリ"
356
+
357
+ 画像フォルダ = os.listdir(directory)
358
+
359
+
360
+
361
+ image_list = []
362
+
363
+
364
+
365
+ for it in 画像フォルダ:
366
+
367
+
368
+
369
+ if it == "Thumbs.db":
370
+
343
- コード
371
+ continue
372
+
373
+
374
+
344
-
375
+ image_value = np.array(Image.open(directory + "/" + it))
376
+
377
+ image_value = image_value.reshape(1, image_value.size)
378
+
379
+ append = image_list.append
380
+
381
+ append(image_value)
382
+
383
+
384
+
385
+ image_batch = np.array(image_list)
386
+
387
+
388
+
389
+ print(image_batch.shape)
390
+
391
+ with open ("猫画像バッチ処理.py", "wb") as 猫画像バッチ:
392
+
393
+ pickle.dump(image_batch, 猫画像バッチ)
394
+
345
- ```
395
+ ```

2

誤字

2017/06/05 11:30

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -232,7 +232,7 @@
232
232
 
233
233
 
234
234
 
235
- directory = "C:/Users/黒子/Desktop/学習用猫画像"
235
+ directory = "ディレクトリ"
236
236
 
237
237
  画像フォルダ = os.listdir(directory)
238
238
 
@@ -329,3 +329,17 @@
329
329
  これで少しずつappendしながら保存できるので、うまくいくかと思ったのですが、タスクマネージャーの動きを見る限り、どうやらpickleをloadする時に大きくメモリを使ってしまうようです
330
330
 
331
331
  メモリを圧迫してしまうのはやむおえない事なのでしょうか...
332
+
333
+
334
+
335
+ ※回答に対するコードです。
336
+
337
+ コメントに書くとインデントがずれる為、此方に書かせて頂きます
338
+
339
+
340
+
341
+ ```python
342
+
343
+ コード
344
+
345
+ ```

1

コードの追加

2017/06/05 11:29

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -201,3 +201,131 @@
201
201
 
202
202
 
203
203
  メモリの圧迫を防げて、かつ手作業を極力減らせるバッチ処理を行う方法や、皆さんがどのようにバッチ処理をしているかなど、お聞きしたいです><
204
+
205
+
206
+
207
+ また、メモリは8GBあります。
208
+
209
+
210
+
211
+ 追記
212
+
213
+ ```python
214
+
215
+ from PIL import Image
216
+
217
+ import os
218
+
219
+ import numpy as np
220
+
221
+ import pickle
222
+
223
+
224
+
225
+ image_batch = np.empty((0, 151353), int)
226
+
227
+
228
+
229
+ with open("猫画像バッチ処理.py", "wb") as バッチ処理:
230
+
231
+ pickle.dump(image_batch, バッチ処理)
232
+
233
+
234
+
235
+ directory = "C:/Users/黒子/Desktop/学習用猫画像"
236
+
237
+ 画像フォルダ = os.listdir(directory)
238
+
239
+
240
+
241
+ image_number = 0
242
+
243
+ 分割数 = 200
244
+
245
+ setter = np.empty((0, 151353), int)
246
+
247
+
248
+
249
+ while image_number != len(画像フォルダ) - (1):
250
+
251
+
252
+
253
+ image_name = "/" + 画像フォルダ[image_number]
254
+
255
+
256
+
257
+ if image_name == "/Thumbs.db":
258
+
259
+ image_number +=1
260
+
261
+ continue
262
+
263
+
264
+
265
+ image_value = np.array(Image.open(directory + image_name))
266
+
267
+ image_value = image_value.reshape(1, image_value.size)
268
+
269
+
270
+
271
+ append = np.append
272
+
273
+ setter = append(setter, image_value, axis=0)
274
+
275
+
276
+
277
+ if setter.shape[0] == 分割数:
278
+
279
+
280
+
281
+ with open("猫画像バッチ処理.py", "rb") as バッチ処理:
282
+
283
+ image_batch = pickle.load(バッチ処理)
284
+
285
+
286
+
287
+ image_batch = append(image_batch, setter, axis=0)
288
+
289
+
290
+
291
+ with open("猫画像バッチ処理.py", "wb") as バッチ処理:
292
+
293
+ pickle.dump(image_batch, バッチ処理)
294
+
295
+
296
+
297
+ print(image_batch.shape)
298
+
299
+ del image_batch
300
+
301
+
302
+
303
+ setter = np.delete(setter, range(0, setter.shape[0]), axis=0)
304
+
305
+
306
+
307
+ image_number +=1
308
+
309
+
310
+
311
+ image_batch = append(image_batch, setter, axis=0)
312
+
313
+
314
+
315
+ with open("猫画像バッチ処理.py", "wb") as バッチ処理:
316
+
317
+ pickle.dump(image_batch, バッチ処理)
318
+
319
+ ```
320
+
321
+ 新たの別の事を試したので、一応記載しておきます。
322
+
323
+ 初期化されてある、image_batchを予め、pickle化して保存しておきます。
324
+
325
+ 変数を保持する為にsetterを用意し、そこに画像の配列をappendしていき、指定した分割数が溜まれば、pickle化されてあったimage_batchを開いて、setterに溜まった配列と連結させ、それをpickleで上書き保存します。
326
+
327
+ そしてメモリを確保する為に、delとnp.deletaを使って、image_batchとsetterを削除します。
328
+
329
+ これで少しずつappendしながら保存できるので、うまくいくかと思ったのですが、タスクマネージャーの動きを見る限り、どうやらpickleをloadする時に大きくメモリを使ってしまうようです
330
+
331
+ メモリを圧迫してしまうのはやむおえない事なのでしょうか...