构建要素交叉时出现Tensorflow Python错误-“;除HashedCategoricalColumn外,所有键都必须是字符串或分类列。”;

构建要素交叉时出现Tensorflow Python错误-“;除HashedCategoricalColumn外,所有键都必须是字符串或分类列。”;,python,pandas,tensorflow,Python,Pandas,Tensorflow,我是Tensorflow的新手,正在尝试训练一名模特。该模型包括两个变量的特征交叉。其中一个变量包含已“Z评分”/标准化的数据。另一个是我所说的“虚拟变量”,它的值为1或0 当我尝试运行脚本时,会收到以下错误消息: ValueError: Unsupported key type. All keys must be either string, or categorical column except HashedCategoricalColumn. 我运行了数据类型,“变量1\u或0\u c

我是Tensorflow的新手,正在尝试训练一名模特。该模型包括两个变量的特征交叉。其中一个变量包含已“Z评分”/标准化的数据。另一个是我所说的“虚拟变量”,它的值为1或0

当我尝试运行脚本时,会收到以下错误消息:

ValueError: Unsupported key type. All keys must be either string, or categorical column except HashedCategoricalColumn.
我运行了数据类型,“变量1\u或0\u col”是一个int64,而“normalized\u col”是一个float64

下面是运行时应显示错误的代码示例

from __future__ import absolute_import, division, print_function, unicode_literals
import numpy as np
import pandas as pd
import tensorflow as tf

# Create train_df.
train_df = pd.DataFrame({'one_or_zero_col': [1, 0, 0, 1, 1, 0, 0],
                   'normalized_col': [0, 1.25, -0.5, 0, 0, -.15, 0.1]})
print(train_df.dtypes)

# Feature column list
feature_columns = []

# Create feature columns.
one_or_zero_col = tf.feature_column.numeric_column('one_or_zero_col')
normalized_col = tf.feature_column.numeric_column('normalized_col')
feature_columns.append(normalized_col)

# Create a feature cross of normalized_col and one_or_zero_col.
normalized_col_x_one_or_zero_col = tf.feature_column.crossed_column([normalized_col, one_or_zero_col], hash_bucket_size=100)
crossed_feature = tf.feature_column.indicator_column(normalized_col_x_one_or_zero_col)
feature_columns.append(normalized_col_x_one_or_zero_col)
错误消息 以下是完整的错误消息,以防对您有所帮助

one_or_zero_col      int64
normalized_col     float64
dtype: object
Traceback (most recent call last):
  File "Z:\ML\testML.py", line 19, in <module>
    normalized_col_x_one_or_zero_col = tf.feature_column.crossed_column([normalized_col, one_or_zero_col], hash_bucket_size=100)
  File "Z:\Python\lib\site-packages\tensorflow\python\feature_column\feature_column_v2.py", line 2170, in crossed_column
    raise ValueError(
ValueError: Unsupported key type. All keys must be either string, or categorical column except HashedCategoricalColumn. Given: NumericColumn(key='normalized_col', shape=(1,), default_value=None, dtype=tf.float32, normalizer_fn=None)
[Finished in 2.713s]
1列或0列int64
标准化列64
数据类型:对象
回溯(最近一次呼叫最后一次):
文件“Z:\ML\testML.py”,第19行,在
标准化列(normalized\u col,one\u x\u one\u或zero\u col=tf.feature\u column.crossed\u column)([normalized\u col,one\u或zero\u col],hash\u bucket\u size=100)
文件“Z:\Python\lib\site packages\tensorflow\Python\feature\u column\feature\u column\u v2.py”,第2170行,交叉列
升值误差(
ValueError:不支持的键类型。除HashedCategorialColumn外,所有键都必须是字符串或分类列。给定值:NumericColumn(key='normalized\u col',shape=(1,),default\u value=None,dtype=tf.float32,normalizer\u fn=None)
[以2.713s完成]

这是我第一次尝试在tensorflow中使用功能交叉,因此我尝试从Google速成课程中抄袭(显然做得不是很好!)。如果您能提供有关此功能交叉不起作用的任何帮助/建议,我们将不胜感激。谢谢!

我遇到了同样的错误,我解决了将键作为字符串传递的问题(但也是来自的要素的实例)

对你来说,这可能就足够了

normalized_col_x_one_或_zero_col=tf.feature_column.crossed_column([“normalized_col”,“one_或_zero_col”],hash_bucket_size=100)