Python Own dataset ValueError:Tensor转换为dtype float32的Tensor请求了dtype字符串

Python Own dataset ValueError:Tensor转换为dtype float32的Tensor请求了dtype字符串,python,image,tensorflow,type-conversion,jpeg,Python,Image,Tensorflow,Type Conversion,Jpeg,我正在尝试使用我自己的数据集来训练一个GAN网络。我在以.jpg格式加载自己的数据集时遇到问题。我有可用的jpg数据集,我看不出工作数据集和不工作数据集之间jpg编码的区别 这些照片使用windows机器转换,并重命名为001.jpg 002.jpg等。为了进行培训,我正在使用linux机器 我正在使用的python程序使用以下代码加载图像并将其转换为张量: def _image_batch(image_paths, batch_size,

我正在尝试使用我自己的数据集来训练一个GAN网络。我在以.jpg格式加载自己的数据集时遇到问题。我有可用的jpg数据集,我看不出工作数据集和不工作数据集之间jpg编码的区别

这些照片使用windows机器转换,并重命名为001.jpg 002.jpg等。为了进行培训,我正在使用linux机器

我正在使用的python程序使用以下代码加载图像并将其转换为张量:

def _image_batch(image_paths,
                 batch_size,
                 load_size=286,
                 crop_size=256,
                 channels=3,
                 prefetch_batch=2,
                 drop_remainder=True,
                 num_threads=16,
                 shuffle=True,
                 buffer_size=4096,
                 repeat=-1):
    def _parse_func(path):
        img = tf.read_file(path)
        img = tf.image.decode_jpeg(img, channels=channels)
        img = tf.image.random_flip_left_right(img)
        img = tf.image.resize_images(img, [load_size, load_size])
        img = (img - tf.reduce_min(img)) / (tf.reduce_max(img) - tf.reduce_min(img))
        img = tf.random_crop(img, [crop_size, crop_size, channels])
        img = img * 2 - 1
        return img
完全错误是:

Traceback (most recent call last):
  File "/mnt/storage/software/languages/anaconda/Anaconda3-5.2.0-tflow-1.7/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py", line 510, in _apply_op_helper
    preferred_dtype=default_dtype)
  File "/mnt/storage/software/languages/anaconda/Anaconda3-5.2.0-tflow-1.7/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 1040, in internal_convert_to_tensor
    ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
  File "/mnt/storage/software/languages/anaconda/Anaconda3-5.2.0-tflow-1.7/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 883, in _TensorTensorConversionFunction
    (dtype.name, t.dtype.name, str(t)))
ValueError: Tensor conversion requested dtype string for Tensor with dtype float32: 'Tensor("arg0:0", shape=(), dtype=float32)'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "train.py", line 112, in <module>
    a_test_pool = data.ImageData(sess, a_test_img_paths, batch_size, load_size=load_size, crop_size=crop_size)
  File "/mnt/storage/scratch/ag17634/CycleGAN-Tensorflow-Pytorch/data.py", line 35, in __init__
    repeat)
  File "/mnt/storage/scratch/ag17634/CycleGAN-Tensorflow-Pytorch/data.py", line 68, in _image_batch
    dataset = dataset.map(_parse_func, num_parallel_calls=num_threads)
  File "/mnt/storage/software/languages/anaconda/Anaconda3-5.2.0-tflow-1.7/lib/python3.6/site-packages/tensorflow/python/data/ops/dataset_ops.py", line 840, in map
    return ParallelMapDataset(self, map_func, num_parallel_calls)
  File "/mnt/storage/software/languages/anaconda/Anaconda3-5.2.0-tflow-1.7/lib/python3.6/site-packages/tensorflow/python/data/ops/dataset_ops.py", line 1857, in __init__
    super(ParallelMapDataset, self).__init__(input_dataset, map_func)
  File "/mnt/storage/software/languages/anaconda/Anaconda3-5.2.0-tflow-1.7/lib/python3.6/site-packages/tensorflow/python/data/ops/dataset_ops.py", line 1826, in __init__
    self._map_func.add_to_graph(ops.get_default_graph())
  File "/mnt/storage/software/languages/anaconda/Anaconda3-5.2.0-tflow-1.7/lib/python3.6/site-packages/tensorflow/python/framework/function.py", line 488, in add_to_graph
    self._create_definition_if_needed()
  File "/mnt/storage/software/languages/anaconda/Anaconda3-5.2.0-tflow-1.7/lib/python3.6/site-packages/tensorflow/python/framework/function.py", line 321, in _create_definition_if_needed
    self._create_definition_if_needed_impl()
  File "/mnt/storage/software/languages/anaconda/Anaconda3-5.2.0-tflow-1.7/lib/python3.6/site-packages/tensorflow/python/framework/function.py", line 338, in _create_definition_if_needed_impl
    outputs = self._func(*inputs)
  File "/mnt/storage/software/languages/anaconda/Anaconda3-5.2.0-tflow-1.7/lib/python3.6/site-packages/tensorflow/python/data/ops/dataset_ops.py", line 1791, in tf_map_func
    ret = map_func(nested_args)
  File "/mnt/storage/scratch/ag17634/CycleGAN-Tensorflow-Pytorch/data.py", line 57, in _parse_func
    img = tf.read_file(path)
  File "/mnt/storage/software/languages/anaconda/Anaconda3-5.2.0-tflow-1.7/lib/python3.6/site-packages/tensorflow/python/ops/gen_io_ops.py", line 527, in read_file
    "ReadFile", filename=filename, name=name)
  File "/mnt/storage/software/languages/anaconda/Anaconda3-5.2.0-tflow-1.7/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py", line 533, in _apply_op_helper
    (prefix, dtypes.as_dtype(input_arg.type).name))
TypeError: Input 'filename' of 'ReadFile' Op has type float32 that does not match expected type of string.
回溯(最近一次呼叫最后一次):
文件“/mnt/storage/software/languages/anaconda/Anaconda3-5.2.0-tflow-1.7/lib/python3.6/site packages/tensorflow/python/framework/op_def_library.py”,第510行,在“应用”和“操作”助手中
首选类型(默认类型)
文件“/mnt/storage/software/languages/anaconda/Anaconda3-5.2.0-tflow-1.7/lib/python3.6/site packages/tensorflow/python/framework/ops.py”,第1040行,内部格式为转换为张量
ret=conversion\u func(值,dtype=dtype,name=name,as\u ref=as\u ref)
文件“/mnt/storage/software/languages/anaconda/anaconda/Anaconda3-5.2.0-tflow-1.7/lib/python3.6/site packages/tensorflow/python/framework/ops.py”,第883行,位于_tensortensortensortransitionfunction函数中
(dtype.name,t.dtype.name,str(t)))
ValueError:Tensor转换为dtype float32的Tensor请求了dtype字符串:“Tensor(“arg0:0”,shape=(),dtype=float32)”
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“train.py”,第112行,在
a\u测试\u池=数据。图像数据(sess、a\u测试\u图像\u路径、批次大小、加载大小=加载大小、裁剪大小=裁剪大小)
文件“/mnt/storage/scratch/ag17634/CycleGAN Tensorflow Pytorch/data.py”,第35行,在__
重复)
文件“/mnt/storage/scratch/ag17634/CycleGAN Tensorflow Pytorch/data.py”,第68行,在批处理中
dataset=dataset.map(\u parse\u func,num\u parallel\u calls=num\u threads)
文件“/mnt/storage/software/languages/anaconda/Anaconda3-5.2.0-tflow-1.7/lib/python3.6/site packages/tensorflow/python/data/ops/dataset_ops.py”,地图第840行
返回ParallelMapDataset(self、map\u func、num\u parallel\u调用)
文件“/mnt/storage/software/languages/anaconda/Anaconda3-5.2.0-tflow-1.7/lib/python3.6/site packages/tensorflow/python/data/ops/dataset_ops.py”,第1857行,在__
超级(ParallelMapDataset,self)。\uuuuu init\uuuuuuuuuuuuu(输入数据集,映射函数)
文件“/mnt/storage/software/languages/anaconda/Anaconda3-5.2.0-tflow-1.7/lib/python3.6/site packages/tensorflow/python/data/ops/dataset_ops.py”,第1826行,在__
self.\u map\u func.add\u to\u graph(ops.get\u default\u graph())
文件“/mnt/storage/software/languages/anaconda/Anaconda3-5.2.0-tflow-1.7/lib/python3.6/site packages/tensorflow/python/framework/function.py”,第488行,添加到图中
self.\u创建\u定义\u如果需要()
文件“/mnt/storage/software/languages/anaconda/anaconda/Anaconda3-5.2.0-tflow-1.7/lib/python3.6/site packages/tensorflow/python/framework/function.py”,第321行,在“创建定义”中,如果需要
self.\u创建\u定义\u如果需要\u impl()
文件“/mnt/storage/software/languages/anaconda/anaconda/Anaconda3-5.2.0-tflow-1.7/lib/python3.6/site packages/tensorflow/python/framework/function.py”,第338行,在“创建定义”中(如果需要)
输出=自身功能(*输入)
文件“/mnt/storage/software/languages/anaconda/Anaconda3-5.2.0-tflow-1.7/lib/python3.6/site packages/tensorflow/python/data/ops/dataset_ops.py”,第1791行,在tf_map_func中
ret=映射函数(嵌套参数)
文件“/mnt/storage/scratch/ag17634/CycleGAN Tensorflow Pytorch/data.py”,第57行,在解析函数中
img=tf.read\u文件(路径)
文件“/mnt/storage/software/languages/anaconda/Anaconda3-5.2.0-tflow-1.7/lib/python3.6/site packages/tensorflow/python/ops/gen_io_ops.py”,第527行,在read_文件中
“ReadFile”,文件名=文件名,名称=名称)
文件“/mnt/storage/software/languages/anaconda/Anaconda3-5.2.0-tflow-1.7/lib/python3.6/site packages/tensorflow/python/framework/op_def_library.py”,第533行,在“应用”和“操作”助手中
(前缀,dtypes.as\u dtype(输入参数类型).name))
TypeError:“ReadFile”Op的输入“filename”的类型float32与预期的字符串类型不匹配。

这听起来像是一个转换问题。 我想你可能得打个电话
str(输入)

在作为文件名传递的输入上

我跟你犯了同样的错误

我解决它:正确更改路径名

我想在你的情况下,你应该在代码中检查你的“路径”名称

img = tf.read_file(path)