@katsuki5080

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

pythonの配列にうまく格納できないので教えていただきたいです。

3次元のCNNで動画データを学習させるために、フレームに切り分けたものを動画数分用意し、一つにまとめた5次元の配列を作っています。

ここで問題が発生しているのですが、動画約120個分の5次元配列は正常に作成できるのですが、多くなるとうまく作成できません。
(各動画160フレーム、画像サイズ100、グレースケール)

(120, 160, 100, 100, 1) 

shapeで配列を見ると本来こう↑なるはずなのですが、動画数が増えるとこう↓なります。

(200,)

うまく格納できていないということだと思うのですが、配列の容量があったりするのでしょうか?改善方法を教えていただけると幸いです。

ちなみにコードはこんな感じです。ループでうまく作れなかったのでごり押しでリスト名を変えながら動画数分同じコードを書いてます。

img_list = glob.glob('./' + line1_0 + '/*.' + file_type)
temp_img_array0_list = []
for img in img_list:#frame-image
    temp_img = load_img(img,grayscale=False,target_size=(image_size))
    temp_img = temp_img.convert("L")
    temp_img_array = img_to_array(temp_img).astype(np.uint8) 
    temp_img_array0_list.append(temp_img_array)

temp_img_array0_list = np.array(temp_img_array0_list)
X.append(temp_img_array0_list)
print("0 finished!")

そのあとリストを配列化し、npy形式で保存してます。

X = np.array(X)

回答よろしくお願いします。

0 likes

1Answer

使わなくなったオブジェクトを削除してメモリを開放するとよいかと思います。

また、動画何個目までは正常に読めたかをひかえておいて限界を知るのもよいかと思います。

データ分析時のメモリ使用量を減らす方法 - 盆暗の学習記録
https://nigimitama.hatenablog.jp/entry/2019/11/05/000000

Kerasでメモリに乗りきらない量のデータを扱うための、fit_generator関数を試してみる
https://qiita.com/simonritchie/items/d7168d1d9cea9ceb6af7

Kerasでメモリに乗り切らないぐらいの大量データを学習するたった1つの方法 - WonderPlanet Developers’ Blog
https://developers.wonderpla.net/entry/2017/10/24/110000

Kerasでメモリ使用量を減らしたかったらmax_queue_sizeを調整する | Shikoan's ML Blog
https://blog.shikoan.com/keras_max_queue/

0Like

Comments

  1. @katsuki5080

    Questioner

    何度もありがとうございます!試してみます。
  2. @katsuki5080

    Questioner

    今回教えていただいた方法はどちらかというと、すでに用意できてるデータをメモリ容量少なく学習させる感じだったので少し違いました。でも参考になります!ありがとうございます。

Your answer might help someone💌