Malaio
Malaio

Reputation: 5

Tensorflow: Setting an array element with a sequence

I'm trying to train a CNN using my own image dataset, but when passing the batch data and label to the feed_dict I get the error ValueError: setting an array element with a sequence from what I read here, this is a dimension issue, and probably coming from my batch_label Tensor, but I couldn't figure out how to make it a one-hot Tensor (what my graph expects).

I uploaded the full code as a gist here: https://gist.github.com/guivn/f7f753547f77a3b12992

Upvotes: 0

Views: 316

Answers (1)

mrry
mrry

Reputation: 126154

TL;DR: You can't feed a tf.Tensor object (viz. batch_data and batch_labels in your gist) as the value for another tensor. (I believe the error message should be clearer about this in more recent versions of TensorFlow.)

Unfortunately you can't currently use the feed/tf.placeholder() mechanism to pass the result of one TensorFlow graph to another. We are investigating ways to make this easier, since it is a common confusion and feature request. For your exact program, it should be easy to solve this however. Simply move the lines that create the input and replace the placeholders with them. Your program will then look something like:

with graph.as_default():

  # Input data.
  filename_and_label_tensor = tf.train.string_input_producer(['train.txt'], shuffle=True)
  data, label = parse_csv(filename_and_label_tensor)
  tf_train_dataset, tf_train_labels = tf.train.batch([data, label], batch_size, num_threads=4)

  # Rest of the model construction goes here....

Typically, if you want to pass another dataset through the same model—e.g. for evaluation—it's easiest to make another copy of the graph (perhaps sharing the same tf.Variable objects).

Upvotes: 1

Related Questions