【发布时间】:2019-04-16 11:25:45
【问题描述】:
我想知道是否有人为 tensorflow 的估计器创建了自己的自定义输入函数?喜欢 (link) 这个图片:
这里说推荐使用tf.data.dataset。但我不想使用那个,因为我想编写自己的迭代器,它可以批量生成数据并对其进行洗牌。
def data_in(train_data):
data = next(train_data)
ff = list(data)
tf.enable_eager_execution()
imgs = tf.stack([tf.convert_to_tensor(np.reshape(f[0], [img_size[0], img_size[1], img_size[2]])) for f
in ff])
lbls = tf.stack([f[1] for f in ff])
print('TRAIN data: %s %s ' % (imgs.get_shape(), lbls.get_shape()))
return imgs, lbls
输出:TRAIN data: (10, 32, 32, 3) (10,)
其中 train_data 是一个生成器对象,它基本上使用 iter 和 np.reshape(f[0], [img_size[0], img_size2, img_size2] 遍历我的数据集将我提取的数据重新整形为所需的尺寸,它是整个数据集的一批。我使用堆栈将张量列表转换为堆叠张量。但是当我将它与估计器一起使用时,我得到提供给的功能的错误模型说这些特征没有 get_shape()。当我在没有估计器的情况下对其进行测试时,它运行良好,并且 get_shape() 也运行良好。
【问题讨论】:
-
您分享的示例文档实际上并未演示如何使用该功能。也许您可能需要在输入估算器之前使用 numpy_input_fn 包装您的函数?
-
嗨,kvish,谢谢您的回复:)。好吧,我为 imgs 和 lbls 获得的数据已经分批了,所以使用 numpy_input_fn 对我没有用。因为它需要整个数据集,然后从中读取批次。
标签: python tensorflow deep-learning tensorflow-estimator