我试图在.csv数据集(5008列,533行)上训练模型。 我使用的TextReader将数据解析为两个张量,一个保存数据对[例如]和一个训练保持正确的标签[标签]:Tensorflow:使用输入管道(.csv)作为训练字典
def read_my_file_format(filename_queue):
reader = tf.TextLineReader()
key, record_string = reader.read(filename_queue)
record_defaults = [[0.5] for row in range(5008)]
#Left out most of the columns for obvious reasons
col1, col2, col3, ..., col5008 = tf.decode_csv(record_string, record_defaults=record_defaults)
example = tf.stack([col1, col2, col3, ..., col5007])
label = col5008
return example, label
def input_pipeline(filenames, batch_size, num_epochs=None):
filename_queue = tf.train.string_input_producer(filenames, num_epochs=num_epochs, shuffle=True)
example, label = read_my_file_format(filename_queue)
min_after_dequeue = 10000
capacity = min_after_dequeue + 3 * batch_size
example_batch, label_batch = tf.train.shuffle_batch([example, label], batch_size=batch_size, capacity=capacity, min_after_dequeue=min_after_dequeue)
return example_batch, label_batch
执行的东西时,这部分工作,像:
with tf.Session() as sess:
ex_b, l_b = input_pipeline(["Tensorflow_vectors.csv"], 10, 1)
print("Test: ",ex_b)
我的结果是Test: Tensor("shuffle_batch:0", shape=(10, 5007), dtype=float32)
到目前为止,这似乎没什么问题。接下来,我创建了一个简单的模型,其中包含两个隐藏层(分别为512和256个节点)。
batch_x, batch_y = input_pipeline(["Tensorflow_vectors.csv"], batch_size)
_, cost = sess.run([optimizer, cost], feed_dict={x: batch_x.eval(), y: batch_y.eval()})
我基于this example that uses the MNIST database这种方法:当事情出错时,我试图培养模式。 但是,当我执行此操作时,即使当我仅使用batch_size = 1
时,Tensorflow也会挂起。如果我离开了.eval()
职能应该从张量获取的实际数据,我得到如下回应:
TypeError: The value of a feed cannot be a tf.Tensor object. Acceptable feed values include Python scalars, strings, lists, or numpy ndarrays.
现在,这个我能理解,但我不明白为什么程序挂起时,我不包括.eval()
函数,我不知道我在哪里可以找到有关此问题的任何信息。
编辑:我包括我的整个脚本here的最新版本。该程序仍然挂起,即使我实施了(据我所知)提供的解决方案vijay m
请问您可以添加整个代码吗? –
整个代码可以在这里找到:[链接](https://github.com/Voidling0/TFCSV2/blob/master/script.py) – Voidling