tensorflow - Tensorflow:张量必须来自与张量相同的图
问题描述
张量流的第一步,我正在尝试训练用于图像分类的 DNN 模型。
我目前的代码是:
folder_path = Path('cropped_images/cropped')
df['filename'] = df['tag_id'].map(lambda tag: str(folder_path / (tag + '.png')))
def database_input_fn():
def parse_image(filename, label):
image_decoded = tf.image.decode_png(tf.read_file(filename), channels=3)
image_resized = tf.image.resize_images(image_decoded, [64, 64])
label = label == 'large vehicle'
return image_resized, label
filenames = tf.constant(df['filename'])
labels = tf.constant(df['general_class'])
dataset = tf.data.Dataset.from_tensor_slices((filenames, labels))
dataset = dataset.map(parse_image)
dataset = dataset.shuffle()
dataset = dataset.batch(32)
dataset = dataset.repeat()
return dataset
images_fc = tf.feature_column.numeric_column('image', shape=[64, 64, 3])
estimator = tf.estimator.DNNClassifier(feature_columns=[images_fc],
hidden_units=[32, 32, 32, 32])
metrics = estimator.train(lambda : dataset, steps=10000)
包含图像df
路径pandas.DataFrame
及其相应标签的位置。图像存储在磁盘上的上述文件夹路径中。
我收到以下错误:
ValueError: Tensor("IteratorV2:0", shape=(), dtype=resource) must be from the same graph as Tensor("BatchDatasetV2_4:0", shape=(), dtype=variant).
我错过了什么?为什么不是所有东西都在同一张图上构建?
解决方案
我认为
metrics = estimator.train(lambda : dataset, steps=10000)
可能是问题所在。如果您检查estimator train的参数,则 input_fn 构造并返回一个数据集,这意味着为 estimator 和输入函数创建了一个新图。在您的情况下,您已经在此范围之外创建了该图。可能将您的代码更改为:
metrics = estimator.train(input_fn=database_input_fn, steps=10000)
可能会解决这个问题!
推荐阅读
- python - 制作列表的本地副本并对其进行变异
- javascript - TypeScript HMAC SHA1 Verification Method
- python - Pandas 中的哈希表映射
- c# - .Net 路径比较,桌面路径问题(OneDrive ...)
- javascript - 如何将 Uint8Array 转换为图像
- java - Java (Android) 中的象形图或符号识别
- android - TextView 去除尾随点
- image-processing - 使用 Imagemagick 仅显示所有非黑色、非白色像素
- node.js - 尝试部署 Firebase 函数时出现语法解析错误教程
- c# - 使用流的高内存使用解决方案