首页 > 解决方案 > 为什么我不能将字符串提供给 tf.placeholder?

问题描述

我的主要代码:

filename = tf.placeholder(tf.string)
filenames = [filename]
dataset = tf.data.TFRecordDataset(filenames)
dataset = dataset.map(parse_image_function,
                      num_parallel_calls=num_parallel_calls)
dataset = dataset.map(_preprocess, num_parallel_calls=num_parallel_calls)
dataset = dataset.shuffle(buffer_size=5000)
dataset = dataset.batch(batch_size)
dataset = dataset.prefetch(buffer_size=prefetch_buffer_size)
iterator = dataset.make_initializable_iterator()
next_element = iterator.get_next()

# Compute for 100 epochs.
for _ in range(100):
    sess.run(iterator.initializer)
    while True:
        try:
            print(get_current_time())
            sess.run(next_element, feed_dict={filename: "train.tfrecords"})
            print(get_current_time())
        except tf.errors.OutOfRangeError:
            break

但我得到了错误:

File "/home/ly/anaconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1322, in _do_call
    return fn(*args)
File "/home/ly/anaconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1307, in _run_fn
    options, feed_dict, fetch_list, target_list, run_metadata)
File "/home/ly/anaconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1409, in _call_tf_sessionrun
    run_metadata)
tensorflow.python.framework.errors_impl.InvalidArgumentError: You must feed a value for placeholder tensor 'Placeholder' with dtype string
     [[Node: Placeholder = Placeholder[dtype=DT_STRING, shape=<unknown>, _device="/job:localhost/replica:0/task:0/device:CPU:0"]()]]

我实际上输入了一个字符串,为什么会发生这个错误?字符串占位符不是这样使用的吗?

标签: pythonstringtensorflowplaceholder

解决方案


推荐阅读