我想知道是否有人为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_size 2,img_size {{3 }}]基本上将提取的数据整形为所需的维度,并且它是整个数据集的一部分。我使用堆栈将张量列表转换为堆叠张量,但是当我将其与估计量一起使用时,我得到一个错误模型提供的功能说这些功能没有get_shape()。当我在没有估算器的情况下对其进行测试时,它可以很好地工作,并且get_shape()也可以很好地工作。
答案 0 :(得分:1)
嘿kvish我知道了怎么做。我只需要添加这些行
experiment = tf.contrib.learn.Experiment(
cifar_classifier,
train_input_fn=lambda: data_in(),
eval_input_fn=lambda: data_in_eval(),
train_steps=train_steps)
我知道实验已被弃用,现在我也将使用estimator来做它:)