Python 3.x 如何为tf.estimator的输入_fn提供额外的目标参数
如您所知,为了利用tf.estimator,需要实现模型函数,构建一个生成成批(特征、标签)对的管道,因此签名应如下所示:Python 3.x 如何为tf.estimator的输入_fn提供额外的目标参数,python-3.x,tensorflow,keras,deep-learning,Python 3.x,Tensorflow,Keras,Deep Learning,如您所知,为了利用tf.estimator,需要实现模型函数,构建一个生成成批(特征、标签)对的管道,因此签名应如下所示: model_fn(features, labels, mode, params, config): 这些特征和标签应该从输入返回。我们假设features->X和labels->y,我在这里遇到了一个问题,因为我有两种类型的标签 为了将目标和标签作为单独的参数提供,而不仅仅是一个标签参数,有什么替代方案 注意:我尝试将目标和标签连接起来,然后在需要的地方对它们进行切片,但
model_fn(features, labels, mode, params, config):
这些特征和标签应该从输入返回。我们假设features->X和labels->y,我在这里遇到了一个问题,因为我有两种类型的标签
为了将目标和标签作为单独的参数提供,而不仅仅是一个标签参数,有什么替代方案
注意:我尝试将目标和标签连接起来,然后在需要的地方对它们进行切片,但这在模型的执行过程中产生了一个额外的问题。所以我想知道你们还有没有更好的主意
多谢各位 在您的
输入中,您只需返回一个字典,而不是作为标签的张量。也就是说,您的输入函数很可能返回元组(特性、标签)
上的迭代器。特征
和标签
都可以是单个张量或dict
。这句话应该从字符串映射到张量
您可以将数据集准备为一个返回三个元素的数据集(功能、目标、标签)
,然后包括一个映射以将目标打包到dict中(可能有更好的方法,但这是可行的):
现在,如果其中一个元素是dict(比如,labels
),那么model\u fn
的相应输入也将是dict。然后,您只需在model\u fn中使用标签[“targets”]
和标签[“labels”]
,谢谢@xdurch0,让我试试看,如果有什么异常情况发生,我会在这里更新。
Features = X : [None, 2048]
Labels = targets: [None, 2048]
labels: [None, 1]
data = ... # prepare dataset of 3-tuples
def pack_in_dict(features, targets, labels):
return features, {"targets": targets, "labels": labels}
data = data.map(pack_in_dict)