2017-03-15 10 views
2

Tensorflow Linearロジスティック回帰モデルを〜1000万行と50列のデータセットで実行しようとしています。Tensorflow:StringOutputStreamにkint32maxより大きいバッファを割り当てることができません

このモデルのサブセット、つまり〜6millionセットで同じモデルを実行すると、モデルは正常に動作します。それは、この千万セットにしようとした場合でも、それは次のスタックトレースをスローし、これが関連するコードの抜粋である

[libprotobuf ERROR google/protobuf/io/zero_copy_stream_impl_lite.cc:173] Cannot allocate buffer larger than kint32max for StringOutputStream. 
Traceback (most recent call last): 
    File "tensorflow_up.py", line 70, in <module> 
    m.fit(input_fn=train_input_fn, steps=200) 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/deprecation.py", line 280, in new_func 
    return func(*args, **kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 426, in fit 
    loss = self._train_model(input_fn=input_fn, hooks=hooks) 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 984, in _train_model 
    _, loss = mon_sess.run([model_fn_ops.train_op, model_fn_ops.loss]) 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/monitored_session.py", line 462, in run 
    run_metadata=run_metadata) 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/monitored_session.py", line 786, in run 
    run_metadata=run_metadata) 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/monitored_session.py", line 744, in run 
    return self._sess.run(*args, **kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/monitored_session.py", line 883, in run 
    feed_dict, options) 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/monitored_session.py", line 909, in _call_hook_before_run 
    request = hook.before_run(run_context) 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/basic_session_run_hooks.py", line 340, in before_run 
    "graph.pbtxt") 
    File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/graph_io.py", line 67, in write_graph 
    file_io.atomic_write_string_to_file(path, str(graph_def)) 
ValueError: Unable to convert message to str 

を終了します。

m = tf.contrib.learn.LinearClassifier(feature_columns=[location, master_source, device] + realValues, model_dir='~/') 
m.fit(input_fn=train_input_fn, steps=200) 


results = m.evaluate(input_fn=eval_input_fn, steps=1) 

私はここで何かが足りないのですか?メモリの統計情報は、プログラムが実行されているときによく見えます。

+1

[queue input](https://www.tensorflow.org/programmers_guide/threading_and_queues)を使用しているのか、グラフにデータセットを埋め込んでいますか?後者の場合、このエラーを回避するだけでなく、グラフの構築やチェックポイントの書き込みを高速化するために、キューに切り替えることもできます。つまり、トレーニングデータセット全体がグラフとともに記録されているように見えます。 –

答えて

関連する問題