tensorflow.python.data.ops.dataset_ops.DataSetv1适配器是如何工作的?
我正试图用TensorFlow将我的头缠绕在ML和AI上。网站上有一个讨论.CSV数据处理的示例问题。CVS数据据说取自泰坦尼克号,基本上包含了分类和数字特征,这些特征将用于将乘客标记为死亡或活着 首先,如果有人知道或有任何资源或参考资料比上一篇文章更详细地讨论了该示例,请您向我介绍一下 第二,关于我更重要的问题。本例中使用了一种方法,在保持分类列不变的同时,将单个数字数据打包到单个数字键中 用于执行此操作的功能如下所示:tensorflow.python.data.ops.dataset_ops.DataSetv1适配器是如何工作的?,python,function,csv,tensorflow,Python,Function,Csv,Tensorflow,我正试图用TensorFlow将我的头缠绕在ML和AI上。网站上有一个讨论.CSV数据处理的示例问题。CVS数据据说取自泰坦尼克号,基本上包含了分类和数字特征,这些特征将用于将乘客标记为死亡或活着 首先,如果有人知道或有任何资源或参考资料比上一篇文章更详细地讨论了该示例,请您向我介绍一下 第二,关于我更重要的问题。本例中使用了一种方法,在保持分类列不变的同时,将单个数字数据打包到单个数字键中 用于执行此操作的功能如下所示: class PackNumericFeatures(object):
class PackNumericFeatures(object):
def __init__(self, names):
self.names = names
def __call__(self, features, labels):
numeric_freatures = [features.pop(name) for name in self.names]
numeric_features = [tf.cast(feat, tf.float32) for feat in numeric_freatures]
numeric_features = tf.stack(numeric_features, axis=-1)
features['numeric'] = numeric_features
return features, labels
上述函数的调用方式如下:
NUMERIC_FEATURES = ['age','n_siblings_spouses','parch', 'fare']
packed_train_data = raw_train_data.map(PackNumericFeatures(NUMERIC_FEATURES))
sex : [b'male' b'female' b'female' b'female' b'male']
class : [b'Third' b'First' b'Third' b'First' b'Third']
deck : [b'unknown' b'C' b'unknown' b'C' b'unknown']
embark_town : [b'Southampton' b'Cherbourg' b'Southampton' b'Southampton' b'Queenstown']
alone : [b'n' b'n' b'y' b'n' b'y']
numeric : [[22. 1. 0. 7.25 ]
[38. 1. 0. 71.2833]
[26. 0. 0. 7.925 ]
[35. 1. 0. 53.1 ]
[28. 0. 0. 8.4583]]
show_batch(packed_train_data)
输出压缩的列车数据如下所示:
NUMERIC_FEATURES = ['age','n_siblings_spouses','parch', 'fare']
packed_train_data = raw_train_data.map(PackNumericFeatures(NUMERIC_FEATURES))
sex : [b'male' b'female' b'female' b'female' b'male']
class : [b'Third' b'First' b'Third' b'First' b'Third']
deck : [b'unknown' b'C' b'unknown' b'C' b'unknown']
embark_town : [b'Southampton' b'Cherbourg' b'Southampton' b'Southampton' b'Queenstown']
alone : [b'n' b'n' b'y' b'n' b'y']
numeric : [[22. 1. 0. 7.25 ]
[38. 1. 0. 71.2833]
[26. 0. 0. 7.925 ]
[35. 1. 0. 53.1 ]
[28. 0. 0. 8.4583]]
show_batch(packed_train_data)
上述输出是通过将一批数据(即打包的列车数据
)传递给函数而产生的:
def show_batch(dataset):
for batch, head in dataset.take(1):
for labels, value in batch.items():
print("{:20s}: {}".format(labels, value.numpy()))
像这样:
NUMERIC_FEATURES = ['age','n_siblings_spouses','parch', 'fare']
packed_train_data = raw_train_data.map(PackNumericFeatures(NUMERIC_FEATURES))
sex : [b'male' b'female' b'female' b'female' b'male']
class : [b'Third' b'First' b'Third' b'First' b'Third']
deck : [b'unknown' b'C' b'unknown' b'C' b'unknown']
embark_town : [b'Southampton' b'Cherbourg' b'Southampton' b'Southampton' b'Queenstown']
alone : [b'n' b'n' b'y' b'n' b'y']
numeric : [[22. 1. 0. 7.25 ]
[38. 1. 0. 71.2833]
[26. 0. 0. 7.925 ]
[35. 1. 0. 53.1 ]
[28. 0. 0. 8.4583]]
show_batch(packed_train_data)
我不理解的是map
函数是如何生成该输出的。更一般地说,我不知道包含map
函数的调用是如何与PackNumericFeatures(object)
类交互的
我知道这个问题是具体的,但任何帮助都将不胜感激。干杯。1)您应该链接您引用的网站,以便我们也可以查看。2) 你到底不明白什么?您是否尝试过在\uuu call\uuuu
功能中打印“功能”和“标签”以了解正在发生的事情?谢谢Ian,我已经包括了您提到的网站。我打印了\uuuu call\uuuu
的输出。打印features
将提供一个有序字典,其中包含与所考虑的所有特征相对应的张量(即分类特征加上NUMERIC\u特征
)。而标签只是一个张量。>打印功能提供了一个包含张量的有序字典,该张量对应于所考虑的所有功能(即分类功能加上数字功能)。而标签只是一个张量。你到底不明白什么?我想我已经找到我要找的了。我的误解在于.map
函数的作用。.map(f)
函数是类数据集的一种方法。它的设计目的是接受一个函数并返回传递给它的函数所影响的新数据。@IanQuah您能解释一下功能
和标签
是如何在\uu调用(self,features,labels)
中定义的吗?据我所知,它们应该作为已知参数传递(我对OOP不是很了解)。另外,我想知道是否有可能将这个类重写为函数?我非常感谢。