長い時間(長時間)正しい結果を検索しました。 CSVファイルを読み込み、非常に低速である(グラフ毎回リロードせずにinput_fnで見積もりを養成するためにキューを使用して:Tensorflow:カスタムエスティメータと "input_fn"関数を使用してCSVファイルにキューを使用
問題...私は何かを明らかに不足していると思うが、私は何を知ることができません)。
は、私は自分の推定を作成するために私にmodel_fn関数を与えるカスタムモデルを作成:その後
tf.estimator.Estimator(model_fn=model_fn, params=model_params)
を、私は非常に大規模なCSVファイルを読み込む必要がある(中負荷することはできませんメモリ)ので、キューを使用することにしました(ベストソリューションと思われます)。
nb_features = 10
queue = tf.train.string_input_producer(["test.csv"],
shuffle=False)
reader = tf.TextLineReader()
key, value = reader.read(queue)
record_defaults = [[0] for _ in range(nb_features+1)]
cols = tf.decode_csv(value, record_defaults=record_defaults)
features = tf.stack(cols[0:len(cols)-1]) # Take all columns without the last
label = tf.stack(cols[len(cols)-1]) # Take last column
私はこのコードは大丈夫だと思います。その後
、メインコード:
with tf.Session() as sess:
tf.logging.set_verbosity(tf.logging.INFO)
sess.run(tf.global_variables_initializer())
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(coord=coord)
# Return a Tensor of 1000 features/labels
def get_inputs():
print("input call !")
xs = []
ys = []
for i in range(1000):
x, y = sess.run([features, label])
xs.append(x)
ys.append(y)
return tf.constant(np.asarray(xs), dtype=tf.float32), tf.constant(np.asarray(ys))
estimator.train(input_fn=get_inputs,
steps=100)
coord.request_stop()
coord.join(threads)
あなたが見ることができるように、ここでは醜いものがたくさんある...
私が欲しいもの: I列車機能が各ステップで新しい機能のバッチを使用するようにします。しかし、ここでは、get_inputs関数はトレーニングを開始するときにコールするだけなので、100ステップで1000個の機能を同じバッチで使用します。これを行う簡単な方法はありますか?
は私がestimator.train ステップ= 1とが、これは毎回グラフをリロードし、非常に遅くなってループにしてみてください。
私は今、何をすべきかわからないし、それも可能かどうかわからない...私を助けるため
感謝を!
こんにちは、お返事ありがとうございます。私はすでにあなたの投稿を見ましたが、このソリューションはCSVをTFRecordに変換する必要があります。キュー&バッチ機能を使用するだけでこれを回避できないのだろうかと思います。 – Kayoku
あなたは...できますが、データセット全体がフードの下でやっていることは間違いありません。 csvから直接読み込み、列車のデータを解析することはできますが、速度は遅くなります。私がtfrecordsについて理解している唯一の欠点は、余分なスペースを占めることです。それは本当に心配ですか?イメージをロードしている場合は、パスをtfrecordsに保存してから、通常の方法でファイルから読み込むことができます。 – DomJack
いいえ、TFrecordで複製することは本当に重要ではありません。それは私の個人的な知識のためだけです(そして、私はこの質問に多くの時間を費やすので、hahaです)。あなたは変換せずにCSVからそれを行うことをお考えですか?そして、あなたのソリューションでは、すべてのデータセットがメモリにロードされませんか?ちょうど現在のバッチ、右か?私は明日これを試してみます – Kayoku