Csv 如何在tensorflow 2.0中定义嵌入列?

Csv 如何在tensorflow 2.0中定义嵌入列?,csv,dataset,tensorflow2.0,Csv,Dataset,Tensorflow2.0,我是Tensorflow的新手,我使用本地驱动器中的csv数据来学习本教程,我可以加载csv文件并打印列标题 for feature_batch, label_batch in train_ds.take(1): print('Every feature:', list(feature_batch.keys())) print('A batch of traffic_type',label_batch) 当我试图用 _mt_datetime_embedding = feature_co

我是Tensorflow的新手,我使用本地驱动器中的csv数据来学习本教程,我可以加载csv文件并打印列标题

for feature_batch, label_batch in train_ds.take(1):
  print('Every feature:', list(feature_batch.keys()))
  print('A batch of traffic_type',label_batch)
当我试图用

_mt_datetime_embedding = feature_column.embedding_column(_mt_datetime, dimension=8)
demo(_mt_datetime_embedding)
这个错误出现了

AttributeError:“EmbeddingColumn”对象没有属性“num_bucket”。
我不知道怎么了?谁能帮帮我吗?非常感谢。

根据Tensorflow关于嵌入列的文档:

假设不是只有几个可能的字符串,而是 每个类别有数千(或更多)个值。由于许多原因,例如 类别的数量越来越多,培训一个 使用一个热编码的神经网络。我们可以使用嵌入列 为了克服这个限制。而不是将数据表示为 一个多维度的热向量,一个嵌入列表示 数据作为低维密集向量,其中每个单元可以 包含任何数字,而不仅仅是0或1

当一个分类列有许多可能的值时,最好使用
嵌入列

tf.feature\u column.embedding\u column
的输入必须是由任何
category\u column\u*函数创建的
category column

语法:

tf.feature_column.embedding_column(
    categorical_column, dimension, combiner='mean', initializer=None,
    ckpt_to_load_from=None, tensor_name_in_ckpt=None, max_norm=None, trainable=True,
    use_safe_embedding_lookup=True
)
当我将输入添加为
数值列
而不是
分类列
时,收到
属性错误:“数值列”对象没有属性“num\u bucket”

age_embedding = feature_column.embedding_column(age, dimension=8)
demo(age_embedding)
输出:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-23-94a5fc74016e> in <module>()
      1 age_embedding = feature_column.embedding_column(age, dimension=8)
----> 2 demo(age_embedding)

4 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/feature_column/feature_column_v2.py in create_state(self, state_manager)
   3181     """Creates the embedding lookup variable."""
   3182     default_num_buckets = (self.categorical_column.num_buckets
-> 3183                            if self._is_v2_column
   3184                            else self.categorical_column._num_buckets)   # pylint: disable=protected-access
   3185     num_buckets = getattr(self.categorical_column, 'num_buckets',

AttributeError: 'NumericColumn' object has no attribute 'num_buckets'
193 train examples
49 validation examples
61 test examples

[[-0.4675103   0.61985296  0.06297898  0.00818724  0.05449321 -0.6865342
  -0.05250816 -0.13339798]
 [-0.4675103   0.61985296  0.06297898  0.00818724  0.05449321 -0.6865342
  -0.05250816 -0.13339798]
 [-0.4675103   0.61985296  0.06297898  0.00818724  0.05449321 -0.6865342
  -0.05250816 -0.13339798]
 [ 0.3212179   0.29932576 -0.44579896 -0.4998746   0.064592    0.16934885
   0.02404759  0.5051637 ]
 [-0.4675103   0.61985296  0.06297898  0.00818724  0.05449321 -0.6865342
  -0.05250816 -0.13339798]]
输出:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-23-94a5fc74016e> in <module>()
      1 age_embedding = feature_column.embedding_column(age, dimension=8)
----> 2 demo(age_embedding)

4 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/feature_column/feature_column_v2.py in create_state(self, state_manager)
   3181     """Creates the embedding lookup variable."""
   3182     default_num_buckets = (self.categorical_column.num_buckets
-> 3183                            if self._is_v2_column
   3184                            else self.categorical_column._num_buckets)   # pylint: disable=protected-access
   3185     num_buckets = getattr(self.categorical_column, 'num_buckets',

AttributeError: 'NumericColumn' object has no attribute 'num_buckets'
193 train examples
49 validation examples
61 test examples

[[-0.4675103   0.61985296  0.06297898  0.00818724  0.05449321 -0.6865342
  -0.05250816 -0.13339798]
 [-0.4675103   0.61985296  0.06297898  0.00818724  0.05449321 -0.6865342
  -0.05250816 -0.13339798]
 [-0.4675103   0.61985296  0.06297898  0.00818724  0.05449321 -0.6865342
  -0.05250816 -0.13339798]
 [ 0.3212179   0.29932576 -0.44579896 -0.4998746   0.064592    0.16934885
   0.02404759  0.5051637 ]
 [-0.4675103   0.61985296  0.06297898  0.00818724  0.05449321 -0.6865342
  -0.05250816 -0.13339798]]

有关更多详细信息,请参考Tensorflow文档中关于嵌入列的部分:

假设不是只有几个可能的字符串,而是 每个类别有数千(或更多)个值。由于许多原因,例如 类别的数量越来越多,培训一个 使用一个热编码的神经网络。我们可以使用嵌入列 为了克服这个限制。而不是将数据表示为 一个多维度的热向量,一个嵌入列表示 数据作为低维密集向量,其中每个单元可以 包含任何数字,而不仅仅是0或1

当一个分类列有许多可能的值时,最好使用
嵌入列

tf.feature\u column.embedding\u column
的输入必须是由任何
category\u column\u*函数创建的
category column

语法:

tf.feature_column.embedding_column(
    categorical_column, dimension, combiner='mean', initializer=None,
    ckpt_to_load_from=None, tensor_name_in_ckpt=None, max_norm=None, trainable=True,
    use_safe_embedding_lookup=True
)
当我将输入添加为
数值列
而不是
分类列
时,收到
属性错误:“数值列”对象没有属性“num\u bucket”

age_embedding = feature_column.embedding_column(age, dimension=8)
demo(age_embedding)
输出:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-23-94a5fc74016e> in <module>()
      1 age_embedding = feature_column.embedding_column(age, dimension=8)
----> 2 demo(age_embedding)

4 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/feature_column/feature_column_v2.py in create_state(self, state_manager)
   3181     """Creates the embedding lookup variable."""
   3182     default_num_buckets = (self.categorical_column.num_buckets
-> 3183                            if self._is_v2_column
   3184                            else self.categorical_column._num_buckets)   # pylint: disable=protected-access
   3185     num_buckets = getattr(self.categorical_column, 'num_buckets',

AttributeError: 'NumericColumn' object has no attribute 'num_buckets'
193 train examples
49 validation examples
61 test examples

[[-0.4675103   0.61985296  0.06297898  0.00818724  0.05449321 -0.6865342
  -0.05250816 -0.13339798]
 [-0.4675103   0.61985296  0.06297898  0.00818724  0.05449321 -0.6865342
  -0.05250816 -0.13339798]
 [-0.4675103   0.61985296  0.06297898  0.00818724  0.05449321 -0.6865342
  -0.05250816 -0.13339798]
 [ 0.3212179   0.29932576 -0.44579896 -0.4998746   0.064592    0.16934885
   0.02404759  0.5051637 ]
 [-0.4675103   0.61985296  0.06297898  0.00818724  0.05449321 -0.6865342
  -0.05250816 -0.13339798]]
输出:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-23-94a5fc74016e> in <module>()
      1 age_embedding = feature_column.embedding_column(age, dimension=8)
----> 2 demo(age_embedding)

4 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/feature_column/feature_column_v2.py in create_state(self, state_manager)
   3181     """Creates the embedding lookup variable."""
   3182     default_num_buckets = (self.categorical_column.num_buckets
-> 3183                            if self._is_v2_column
   3184                            else self.categorical_column._num_buckets)   # pylint: disable=protected-access
   3185     num_buckets = getattr(self.categorical_column, 'num_buckets',

AttributeError: 'NumericColumn' object has no attribute 'num_buckets'
193 train examples
49 validation examples
61 test examples

[[-0.4675103   0.61985296  0.06297898  0.00818724  0.05449321 -0.6865342
  -0.05250816 -0.13339798]
 [-0.4675103   0.61985296  0.06297898  0.00818724  0.05449321 -0.6865342
  -0.05250816 -0.13339798]
 [-0.4675103   0.61985296  0.06297898  0.00818724  0.05449321 -0.6865342
  -0.05250816 -0.13339798]
 [ 0.3212179   0.29932576 -0.44579896 -0.4998746   0.064592    0.16934885
   0.02404759  0.5051637 ]
 [-0.4675103   0.61985296  0.06297898  0.00818724  0.05449321 -0.6865342
  -0.05250816 -0.13339798]]
有关更多详细信息,请参阅