如何解决分类器模型中的InvalidArgumentError?

时间:2018-11-18 10:47:41

标签: tensorflow

TensorFlow的新手,所以为新手问题道歉。

以下tutorial之后,我使用数字数据代替了图像数据。

加载数据集:

train_dataset_url = "xxx.csv"
train_dataset_fp = tf.keras.utils.get_file(
  fname=os.path.basename(train_dataset_url),
  origin=train_dataset_url)

制作训练数据集:

batch_size = 32

train_dataset = tf.contrib.data.make_csv_dataset(
    train_dataset_fp,
    batch_size, 
    column_names=column_names,
    label_name=label_name,
    num_epochs=1)

使用以下方法训练分类模型:

model = tf.keras.Sequential([ tf.keras.layers.Dense(10, activation=tf.nn.relu, input_shape=(1,)), tf.keras.layers.Dense(10, activation=tf.nn.relu), tf.keras.layers.Dense(4) ])

但是当我用相同的输入“测试”模型时:

predictions = model(features)

我收到错误:

InvalidArgumentError: cannot compute MatMul as input #0(zero-based) was expected to be a float tensor but is a int32 tensor [Op:MatMul]

我可能错过了一些基本知识。我觉得我需要在某个地方指定类型。

1 个答案:

答案 0 :(得分:1)

根据我的假设,您在模型中提供的数据是一个numpy数组。错误指出模型需要dtype = float32或float64的张量。您正在提供一个int32 numpy数组。因此,无论您在哪里创建一个numpy数组,都只需将dtype提到为float32。