python - 试图将 csv 数据集读入 tensorflow
问题描述
我有 csv 文件(训练和测试),其中包含以下格式的数据
我正在尝试将我的数据(100MB)加载到 tensorflow 输入管道中(不确定这是否是正确的方法)。
x, y = tf.placeholder(tf.float32, shape=[None,2]), tf.placeholder(tf.float32, shape=[None,1])
dataset = tf.data.Dataset.from_tensor_slices((x, y))
train_dataset = tf.contrib.data.make_csv_dataset(csv_path+'\csvdatatrain.csv', batch_size=32)
test_dataset = tf.contrib.data.make_csv_dataset(csv_path+'\csvdatatest.csv', batch_size=32)
iter = dataset.make_initializable_iterator()
features, labels = iter.get_next()
with tf.Session() as sess:
#initialise iterator with train data
sess.run(iter.initializer, feed_dict={x: train_dataset[0], y: train_dataset[1]})
for _ in range(EPOCHS):
#### Training
print('This is training')
#### Testing
sess.run(iter.initializer, feed_dict={ x: test_dataset[0], y: test_dataset[1]})
print('This is testing')
使用训练数据初始化迭代器时出现错误
sess.run(iter.initializer, feed_dict={ x: train_dataset 1 , y: train_dataset [0]}) TypeError: 'PrefetchDataset' 对象不支持索引
解决方案
如果您要使用 tensorflow 数据加载器,则不需要占位符。您可以使用 numpy 加载 csv 文件并将其传递给占位符,feed_dict
也可以使用 tensorflow 数据加载器并仅将路径传递给 csv 文件。
如果您要使用 tensorflow 数据加载器,则无需在每个 epoch 都初始化迭代器!它只初始化一次,不需要feed_dict
在那里。
这段代码在 tensorflow 1.8 上与我一起工作(在那里使用了iris 数据集)
EPOCHS = 10
dataset = tf.contrib.data.make_csv_dataset('iris.csv',batch_size=1)
iterator = dataset.make_initializable_iterator()
next_elemnet = iterator.get_next()
with tf.Session() as sess:
sess.run(iterator.initializer)
for _ in range(EPOCHS):
print(sess.run(next_elemnet))
输出应如下所示:
{'sepal_length': array([ 6.4000001], dtype=float32), 'sepal_width': array([ 2.79999995], dtype=float32), 'petal_length': array([ 5.5999999], dtype=float32), 'petal_width': array([ 2.20000005], dtype=float32), 'species': array([b'virginica'], dtype=object)}
{'sepal_length': array([ 5.19999981], dtype=float32), 'sepal_width': array([ 2.70000005], dtype=float32), 'petal_length': array([ 3.9000001], dtype=float32), 'petal_width': array([ 1.39999998], dtype=float32), 'species': array([b'versicolor'], dtype=object)}
{'sepal_length': array([ 4.80000019], dtype=float32), 'sepal_width': array([ 3.4000001], dtype=float32), 'petal_length': array([ 1.89999998], dtype=float32), 'petal_width': array([ 0.2], dtype=float32), 'species': array([b'setosa'], dtype=object)}
{'sepal_length': array([ 7.69999981], dtype=float32), 'sepal_width': array([ 2.79999995], dtype=float32), 'petal_length': array([ 6.69999981], dtype=float32), 'petal_width': array([ 2.], dtype=float32), 'species': array([b'virginica'], dtype=object)}
{'sepal_length': array([ 4.4000001], dtype=float32), 'sepal_width': array([ 3.], dtype=float32), 'petal_length': array([ 1.29999995], dtype=float32), 'petal_width': array([ 0.2], dtype=float32), 'species': array([b'setosa'], dtype=object)}
{'sepal_length': array([ 5.], dtype=float32), 'sepal_width': array([ 3.], dtype=float32), 'petal_length': array([ 1.60000002], dtype=float32), 'petal_width': array([ 0.2], dtype=float32), 'species': array([b'setosa'], dtype=object)}
{'sepal_length': array([ 6.4000001], dtype=float32), 'sepal_width': array([ 3.20000005], dtype=float32), 'petal_length': array([ 5.30000019], dtype=float32), 'petal_width': array([ 2.29999995], dtype=float32), 'species': array([b'virginica'], dtype=object)}
{'sepal_length': array([ 4.5], dtype=float32), 'sepal_width': array([ 2.29999995], dtype=float32), 'petal_length': array([ 1.29999995], dtype=float32), 'petal_width': array([ 0.30000001], dtype=float32), 'species': array([b'setosa'], dtype=object)}
{'sepal_length': array([ 5.], dtype=float32), 'sepal_width': array([ 3.5], dtype=float32), 'petal_length': array([ 1.60000002], dtype=float32), 'petal_width': array([ 0.60000002], dtype=float32), 'species': array([b'setosa'], dtype=object)}
{'sepal_length': array([ 6.], dtype=float32), 'sepal_width': array([ 2.20000005], dtype=float32), 'petal_length': array([ 5.], dtype=float32), 'petal_width': array([ 1.5], dtype=float32), 'species': array([b'virginica'], dtype=object)}
推荐阅读
- angular - 如何从任何 Angular 组件访问 URL 参数?
- javascript - 调整窗口大小然后向下滚动时,某些元素彼此分开
- javascript - 制作动态网址
- java - /usr/bin/jsvc: No such file or directory 尝试运行 jsvc 时出错
- angular - 如何绑定复选框以使用类型脚本在 Angular 6 中重新计算动态数据
- python - 如何创建线程并在脚本之间传递变量?
- python - Django:使用反向外键按最新()过滤
- c# - SqlDataAdapter 影响了 1 条预期记录中的 0 条,即使数据集已更改
- php - 如何使用网站本身更新网站的内容?
- python - For 循环中的 Python/Selenium 陈旧元素参考