Pandas 将tensorflow数据集转换为数据帧

Pandas 将tensorflow数据集转换为数据帧,pandas,csv,dataframe,tensorflow,Pandas,Csv,Dataframe,Tensorflow,我对深度学习和计算机视觉非常陌生。我想做一些人脸识别项目。为此,我从互联网上下载了一些图像,并借助Tensorflow文档中的文章将其转换为Tensorflow数据集。现在我想将该数据集转换为pandas dataframe,以便将其转换为csv文件。我试了很多,但是做不到。 有人能帮我吗。 下面是制作数据集的代码,然后是一些我为此尝试的错误的代码 import tensorflow as tf import pandas as pd import numpy as np import matp

我对深度学习和计算机视觉非常陌生。我想做一些人脸识别项目。为此,我从互联网上下载了一些图像,并借助Tensorflow文档中的文章将其转换为Tensorflow数据集。现在我想将该数据集转换为pandas dataframe,以便将其转换为csv文件。我试了很多,但是做不到。 有人能帮我吗。 下面是制作数据集的代码,然后是一些我为此尝试的错误的代码

import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt


filenames = tf.constant(['al.jpg', 'al2.jpg', 'al3.jpg', 'al4.jpeg','al5.jpeg', 'al6.jpeg','al7.jpg','al8.jpeg', '5.jpg', 'hrit8.jpeg', 'Hrithik-Roshan.jpg', 'Hrithik.jpg', 'hriti1.jpeg', 'hriti2.jpg', 'hriti3.jpeg', 'hritik4.jpeg', 'hritik5.jpg', 'hritk9.jpeg', 'index.jpeg', 'sah.jpeg', 'sah1.jpeg', 'sah3.jpeg', 'sah4.jpg', 'sah5.jpg','sah6.jpg','sah7.jpg'])
labels = tf.constant([1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 2])
dataset = tf.data.Dataset.from_tensor_slices((filenames, labels))


def _parse_function(filename, label):
     image_string = tf.read_file(filename)
     image_decoded = tf.image.decode_jpeg(image_string,channels=3)
     image_resized = tf.image.resize_images(image_decoded, [28, 28])
     return image_resized, label
dataset = dataset.map(_parse_function)
dataset = dataset.shuffle(buffer_size=100)
dataset = dataset.batch(26)
iterator = dataset.make_one_shot_iterator()
image,labels = iterator.get_next()

sess = tf.Session()

print(sess.run([image, labels]))
最初我只是尝试使用
df=pd.DataFrame(数据集)

然后我得到了以下错误:

enter code here
ValueError                                Traceback (most recent call last)
<ipython-input-15-d5503ae4603d> in <module>()
----> 1 df = pd.DataFrame((dataset))

 ~/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py in __init__(self, data, index, columns, dtype, copy)
402                                          dtype=values.dtype, copy=False)
403             else:
--> 404                 raise ValueError('DataFrame constructor not properly called!')
405 
406         NDFrame.__init__(self, mgr, fastpath=True)

ValueError: DataFrame constructor not properly called!
如果我犯了最愚蠢的错误,请原谅,因为我根据这个类比编写了上面的代码
print(sess.run(dataset))
,得到了一个更大的错误:

 TypeError: Fetch argument <BatchDataset shapes: ((?, 28, 28, 3), (?,)), types: (tf.float32, tf.int32)> has invalid type <class 'tensorflow.python.data.ops.dataset_ops.BatchDataset'>, must be a string or Tensor. (Can not convert a BatchDataset into a Tensor or Operation.)
TypeError:Fetch参数的类型无效,必须是字符串或张量。(无法将BatchDataset转换为张量或运算。)
我想你可以用这样的地图。我假设您希望向数据帧添加一个numpy数组,如下所述。但您必须逐个追加,并且还要计算出整个数组如何适合数据帧的一列

import tensorflow as tf
import pandas as pd


filenames = tf.constant(['C:/Machine Learning/sunflower/50987813_7484bfbcdf.jpg'])
labels = tf.constant([1])
dataset = tf.data.Dataset.from_tensor_slices((filenames, labels))

sess = tf.Session()

def convert_to_dataframe(filename, label):
    print ( pd.DataFrame.from_records(filename))
    return filename, label


def _parse_function(filename, label):
     image_string = tf.read_file(filename)
     image_decoded = tf.image.decode_jpeg(image_string,channels=3)
     image_resized = tf.image.resize_images(image_decoded, [28, 28])
     return image_resized, label

dataset = dataset.map(_parse_function)
dataset = dataset.map( lambda filename, label: tf.py_func(convert_to_dataframe,
                                                          [filename, label],
                                                          [tf.float32,tf.int32]))

dataset = dataset.shuffle(buffer_size=100)
dataset = dataset.batch(26)
iterator = dataset.make_one_shot_iterator()
image,labels = iterator.get_next()


sess.run([image, labels])

你能分享你自己尝试过的代码吗?我编辑了我的问题。
import tensorflow as tf
import pandas as pd


filenames = tf.constant(['C:/Machine Learning/sunflower/50987813_7484bfbcdf.jpg'])
labels = tf.constant([1])
dataset = tf.data.Dataset.from_tensor_slices((filenames, labels))

sess = tf.Session()

def convert_to_dataframe(filename, label):
    print ( pd.DataFrame.from_records(filename))
    return filename, label


def _parse_function(filename, label):
     image_string = tf.read_file(filename)
     image_decoded = tf.image.decode_jpeg(image_string,channels=3)
     image_resized = tf.image.resize_images(image_decoded, [28, 28])
     return image_resized, label

dataset = dataset.map(_parse_function)
dataset = dataset.map( lambda filename, label: tf.py_func(convert_to_dataframe,
                                                          [filename, label],
                                                          [tf.float32,tf.int32]))

dataset = dataset.shuffle(buffer_size=100)
dataset = dataset.batch(26)
iterator = dataset.make_one_shot_iterator()
image,labels = iterator.get_next()


sess.run([image, labels])