概要:新しいtf.contrib.data.Datasetを使用すると、グラフのprotobuffファイルのサイズが2倍になり、Tensorboardでグラフを視覚化できません。Tensorflow Dataset APIはグラフprotobuffファイルサイズを2倍にします
詳細は:
私はtf.contrib.learn.Experiment
フレームワークと一緒に新しいTensorFlow tf.contrib.data.Dataset
機能を実行しようとしています。私の入力データは、テンソルの特徴とラベルを返すinput functionsと定義されています。
私は、次のコードブロック(フルコードhere)のようにtf.train.slice_input_producer
機能で自分の入力機能を作成する場合は、その後、私の結果graph.pbtxt
ファイルが620Mで、.meta
ファイルのサイズは165Mの周りにあります。
def train_inputs():
with tf.name_scope('Training_data'):
x = tf.constant(mnist.train.images.reshape([-1, 28, 28, 1]))
y = tf.constant(mnist.train.labels)
sliced_input = tf.train.slice_input_producer(
tensor_list=[x, y], shuffle=True)
return tf.train.shuffle_batch(
sliced_input, batch_size=batch_size,
capacity=10000, min_after_dequeue=batch_size*10)
私はその後、私のは、1.3Gと.meta
ファイルのサイズにgraph.pbtxt
ファイルダブルス結果、以下のコードブロック(フルコードhere)のように新しいtf.contrib.data.Dataset.from_tensor_slices
と私の入力機能を作成する場合は、330Mの大きさに倍増します。
def train_inputs():
with tf.name_scope('Training_data'):
images = mnist.train.images.reshape([-1, 28, 28, 1])
labels = mnist.train.labels
dataset = tf.contrib.data.Dataset.from_tensor_slices(
(images, labels))
dataset = dataset.repeat(None) # Infinite
dataset = dataset.shuffle(buffer_size=10000)
dataset = dataset.batch(batch_size)
iterator = dataset.make_one_shot_iterator()
next_example, next_label = iterator.get_next()
return next_example, next_label
graph.pbtxt
ファイルがとても大きいためTensorBoardは、このファイルを解析するために年齢をとり、そして私は、視覚的に私のモデルグラフをデバッグすることができませんでしだ。 Dataset documentationこのサイズの増加は、"配列の内容は複数回コピーされます"とsolutionはプレースホルダを使用することになります。 tf.contrib.learn.Experiment
フレームワークを使用したとき、私のコントロール外であることを、しかし、これはそう
sess.run(iterator.initializer, feed_dict={features_placeholder: features, labels_placeholder: labels})
:ただし、この場合には、私はイテレータを初期化するためにアクティブなセッションでプレースホルダにnumpyのアレイに供給するために必要があるだろう。
実験フレームワークでイテレータのイニシャライザを初期化するにはどうすればよいですか?または、グラフサイズを大きくしないでデータセットAPIを使用する回避策を見つけますか?
ニース。私の問題も解決します。回避策のように思えますか? 私の投稿:https://stackoverflow.com/questions/46207211/tensorflow-dataset-api-causes-graph-size-to-explode –