質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

1回答

3149閲覧

tensorflowで200万枚30000ラベルの画像を学習させメモリたいのですが、エラーになるため解決したいです。

daivlb

総合スコア10

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

2クリップ

投稿2018/11/28 08:13

tensorflowを用いて画像認識を行いたいのですが、学習させる画像データが約200万枚あり、自作したCNNに入れて学習させようとすると、メモリエラーとなりました。
そこで、質問なのですがこのような大量の画像データを学習させるにはどのようにすればよいのでしょうか?
画像データと正解ラベルの入ったデータを複数に分割してcnnに読み込むのかわかりません。
また、ラベルが数値でなくUTF-8の文字コード(例:EFBD239など)にしており、学習後に画像認識する際に、結果のラベルを文字コードから文字にしたいと考えています。
ただ、ラベルを数字でつける例はよく見るのですが、文字コードで画像にラベルをつけてnumpyなどの形式(.npzなど)に変換する方法がわかりません。
画像データ自体は文字の画像なので、ラベルは数字でなく文字コードで読み込みたいです。

以上まとめると、

1.200万枚の画像で30000種類のラベルがあるデータを学習させるにはどのようにすればよいか?(メモリエラーなどの問題を回避する方法が知りたいです。)
2. 画像データとラベル(文字コード)を最も扱いやすい形式に変換し、CNNに読み込む方法は何かあるのでしょうか?

わかりにくいかもしれませんが、回答いただければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

200万枚の画像で30000種類のラベルがあるデータを学習させるにはどのようにすればよいか?(メモリエラーなどの問題を回避する方法が知りたいです。)

全データをメモリ上に展開するのではなく、作成するミニバッチ分だけ適宜HDDから読み込んでください。tf.TFRecordReader() が使えます。

Inputs and Readers

2. 画像データとラベル(文字コード)を最も扱いやすい形式に変換し、CNNに読み込む方法は何かあるのでしょうか?

データを TensorFlow で扱いやすいよう TF Record 形式に予め変換しておくとよいと思います。

TensorFlow の I/O の仕組みはかなりややこしいので、公式ドキュメントや「tfrecord」で検索してでてくるページを参考にしてください。
TensorFlowのデータフォーマットTFRecordの書き込みと読み込み方法

投稿2018/11/28 08:49

tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

daivlb

2018/11/30 04:11

回答ありがとうございます。 tfrecordの形式ですが、ラベル数分に分割したほうが良いのか、それともある程度のブロックに分けたほうが良いのかどちらでしょうか?また、数字ラベルを付けたフォルダごとに.tfrecord形式に変換し、一つ一つ連続して書き出していくにはどうすればよいのでしょうか?
tiitoi

2018/11/30 04:41

> ラベル数分に分割したほうが良いのか、それともある程度のブロックに分けたほうが良いのかどちらでしょうか? ある程度のブロックですね 例えば1000サンプルずつとか > 数字ラベルを付けたフォルダごとに.tfrecord形式に変換し ラベルごとにフォルダが分けられていて、各フォルダ内にそのクラスの画像があるということでしょうか? tf record の作成方法について記載があるWebサイト等を参考にしてください。 https://www.tdi.co.jp/miso/tensorflow-tfrecord-01
daivlb

2018/11/30 05:07

ありがとうございます。 現状では、ラベルごとにフォルダを分割しており、各フォルダにラベルと一致する画像が入っています。 そのため、回答いただいたように1000サンプルごとに1つのtfrecordを作成する場合にtfrecordを参考のような1回の実行で1つ作成するのではなく、1000サンプルで1tfrecord作成するのを連続して行いたいのですが、どのようにコードを書けばよいのでしょうか? また、200万枚の画像を仮に2000個のtfrecordに変換した際に、2~3個のtfrecordを読み込んでいったり、1つのtfrecord内の一部を読み取って学習させ、少しずつ読み取るなどの操作は可能なのでしょうか?
tiitoi

2018/11/30 05:56

> 1つのtfrecord内の一部を読み取って学習させ、少しずつ読み取るなどの操作は可能なのでしょうか? 前は QueurRunner https://www.tensorflow.org/api_guides/python/reading_data を使うのが一般的だったのですが、最近 tf.data API なるものが導入されたようでそちらが推奨されてるみたいなので、使い方がわかったら追記しますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問