【问题标题】:ValueError: column_name: input_tensor dtype must be string or integer. dtype: <dtype: 'float32'>ValueError: column_name: input_tensor dtype 必须是字符串或整数。数据类型:<数据类型:'float32'>
【发布时间】: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'>.

这是包含 avg_piat 的数据集的一部分:

我已经尝试从类似的问题中做所有事情,但似乎没有任何效果。我想这可能来自我创建功能列的方式,但我不确定。以下是我创建特征列的方法。提前致谢。

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


【解决方案1】:

在这里为社区的利益提供解决方案。

在更改 avg_piat 的特征列后,问题已解决 从哈希桶到数值列 avg_piat = tf.feature_column.numeric_column("avg_piat")((转述自威尔)

【讨论】:

    猜你喜欢
    • 2020-08-11
    • 2021-07-23
    • 2019-11-29
    • 1970-01-01
    • 2023-02-09
    • 2019-08-12
    • 2021-03-16
    • 2021-06-02
    • 2020-05-26
    相关资源
    最近更新 更多