python - 如何在tensorflow的Estimator的input_fn中读取和处理我的图像文件?
问题描述
我是使用 TF 的新手。.ppm
由于某些原因,我必须使用TF1.10 ,但我发现tf.image.decode_image
.
我的网络的最终目标是读取 RGBD 输入,并使用它来生成更多特征(通过手工制作方法,例如采样法线),最后使用这些额外特征和基本事实计算损失。
由于我的数据集很大,我曾经在我tf.data.TextLineDataset
的 中获取文件路径列表的数据集input_fn
,并尝试使用它Dataset.map
来生成特征。当我尝试解码.ppm
文件时,我发现了这个问题。(代码如下所示。)
或者,有没有其他方法可以避免在读取图像之前将路径转移strings
到,然后我可以使用?但是如果我这样做,我想我必须使用 all来构建我的数据集和迭代器,这可能会花费大量内存。(也许我错了。)Tensor
input_fn
cv2.imread
Tensors
或者,如果您认为我完全误解了 and 的用法dataset
,Estimator
请告诉我正确的方法。谢谢你。
def input_fn(self, dataset, mode="train"):
self.dict_dataset_lists = {}
ds_rgb = os.path.expandvars(dataset["rgb"])
ds_d = os.path.expandvars(dataset["d"])
ds_gt = os.path.expandvars(dataset["gt"])
self.dict_dataset_lists["rgb"] = tf.data.TextLineDataset(ds_rgb)
self.dict_dataset_lists["d"] = tf.data.TextLineDataset(ds_d)
self.dict_dataset_lists["gt"] = tf.data.TextLineDataset(ds_gt)
with tf.name_scope("Dataset_API"):
tf_dataset = tf.data.Dataset.zip(self.dict_dataset_lists)
# load path to imgs(tensor)
if mode == "train":
tf_dataset = tf_dataset.repeat(self.parameters.max_epochs)
if self.parameters.shuffle:
tf_dataset = tf_dataset.shuffle(
buffer_size=self.parameters.steps_per_epoch * self.parameters.batch_size)
tf_dataset = tf_dataset.map(load_img, num_parallel_calls=1)
tf_dataset = tf_dataset.batch(self.parameters.batch_size)
tf_dataset = tf_dataset.prefetch(buffer_size=self.parameters.prefetch_buffer_size)
# make iterator
iterator = tf_dataset.make_one_shot_iterator()
dict_tf_input = iterator.get_next()
解决方案
推荐阅读
- sql-server - 检查谁从 SSISDB 中删除了文件夹
- c - 在 C 中取消引用双指针
- xamarin.forms - 使用 Xamarin.Forms Shell 的动态弹出菜单
- javascript - 用鼠标拖动移动 DIV
- react-native - 使用 Openfire XMPP 反应本机
- html - 用户点击后如何使 div 和输入标签保持选中状态
- python - 如果使用 Paramiko 在远程服务器上启动的命令没有响应,则在一定时间后终止远程会话
- while-loop - Jmeter - 当控制器执行“if ctx.getPreviousResult().getResponseCode() == "200" && counter < "5" not working
- python - 如何使用 Python Numpy 中的 train_test_split 将数据拆分为训练、测试和验证数据集?分裂不应该是随机的
- javascript - 如何在字母表中向上移动一个字符?