【发布时间】:2021-04-30 08:18:07
【问题描述】:
我正在尝试使用 Tensorflow 2.4.0 中的数据包流创建数据包分类器。使用 tf.estimator 训练我的模型时,出现错误:
ValueError: column_name: avg_piat input_tensor dtype must be string or integer. dtype: <dtype: 'float32'>.
我已经尝试从类似的问题中做所有事情,但似乎没有任何效果。我想这可能来自我创建功能列的方式,但我不确定。以下是我创建特征列的方法。提前致谢。
min_piat = tf.feature_column.categorical_column_with_hash_bucket("min_piat",hash_bucket_size=1000)
max_piat = tf.feature_column.categorical_column_with_hash_bucket("max_piat",hash_bucket_size=1000)
avg_piat = tf.feature_column.categorical_column_with_hash_bucket("avg_piat",hash_bucket_size=1000)
## 编辑##
我解决了这个问题。当我为 avg_piat 定义一个特征列时,我将它从一个哈希桶更改为一个数字列:
avg_piat = tf.feature_column.numeric_column("avg_piat")
【问题讨论】:
-
在定义列时,您是否尝试将 .astype("int32") 放在末尾?
-
你能分享你的模型定义吗?
-
@DwightFoster 感谢您的回复。我尝试通过
df.astype({'avg_piat': 'int32'}).dtypes做到这一点。然后它说列 avg_piat 现在是 float64。但是,当我运行其余代码时,我得到了同样的错误。 -
@Lescurel 感谢您的回复。这是我的模型定义。
model = tf.estimator.LinearClassifier(feature_columns=feat_cols)。然而,这是我得到错误model.train(input_fn=input_func,steps=120)的地方。
标签: python tensorflow networking classification packet