TypeError: Значение, передаваемое параметру 'input', имеет DataType int64, которого нет в списке допустимых значений: float16, bfloat16, float32, float64 - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь запустить модель и предсказать тестовые данные из набора данных mnist kaggle. Но я получаю ошибку, когда пытаюсь предсказать. Какова причина и решение?

    model = tf.keras.Sequential([
        tf.keras.layers.Conv2D(32, (3,3), padding='same', activation=tf.nn.relu,
                               input_shape=(28, 28, 1)),
        tf.keras.layers.MaxPooling2D((2, 2), strides=2),
        tf.keras.layers.Conv2D(64, (3,3), padding='same', activation=tf.nn.relu),
        tf.keras.layers.MaxPooling2D((2, 2), strides=2),
        tf.keras.layers.Flatten(input_shape=(28, 28, 1)),
        tf.keras.layers.Dense(128, activation=tf.nn.relu),
        tf.keras.layers.Dense(10,  activation=tf.nn.softmax)
    ])

test = pd.read_csv("test.csv") 
test.head()
CHANNELS = 1
IMAGE_SIZE = 28
IMAGE_WIDTH, IMAGE_HEIGHT = IMAGE_SIZE, IMAGE_SIZE
test = test.values.reshape(-1, IMAGE_WIDTH, IMAGE_HEIGHT, CHANNELS)
predictions = model.predict_classes(test, verbose=1)

TypeError: Значение, переданное параметру 'input', имеет DataType int64, которого нет в списке допустимых значений: float16,bfloat16, float32, float64

1 Ответ

1 голос
/ 08 ноября 2019

Как говорит TypeError, я думаю, что test dataframe содержит int значения, поэтому вы должны изменить тип на float следующим образом:

test = test.astype('float')
test = test.values.reshape(-1, IMAGE_WIDTH, IMAGE_HEIGHT, CHANNELS)
predictions = model.predict_classes(test, verbose=1)
...