【问题标题】:model.predict () return an array instead of a number/labelmodel.predict() 返回一个数组而不是一个数字/标签
【发布时间】:2022-01-10 13:43:22
【问题描述】:

我正在尝试使用经过训练的模型来预测model.predict(data) 用于分类的新测试数据。但是,程序返回的不是数字/标签,而是一个数组。如何修改我的训练代码以正确获取输出?谢谢你。这是我的代码。

def make_model(input_shape):
    input_layer = keras.layers.Input(input_shape)

    conv1 = keras.layers.Conv1D(filters=150, kernel_size=100, padding="same")(input_layer)
    conv1 = keras.layers.BatchNormalization()(conv1)
    conv1 = keras.layers.ReLU()(conv1)

    conv2 = keras.layers.Conv1D(filters=150, kernel_size=100, padding="same")(conv1)
    conv2 = keras.layers.BatchNormalization()(conv2)
    conv2 = keras.layers.ReLU()(conv2)

    conv3 = keras.layers.Conv1D(filters=150, kernel_size=100, padding="same")(conv2)
    conv3 = keras.layers.BatchNormalization()(conv3)
    conv3 = keras.layers.ReLU()(conv3)

    gap = keras.layers.GlobalAveragePooling1D()(conv3)

    output_layer = keras.layers.Dense(num_classes, activation="softmax")(gap)

    return keras.models.Model(inputs=input_layer, outputs=output_layer)


model = make_model(input_shape=x_train.shape[1:])
keras.utils.plot_model(model, show_shapes=True)

epochs = 400
batch_size = 16

callbacks = [
    keras.callbacks.ModelCheckpoint(
        "best_model.h5", save_best_only=True, monitor="val_loss"
    ),
    keras.callbacks.ReduceLROnPlateau(
        monitor="val_loss", factor=0.5, patience=20, min_lr=0.0001
    ),
    keras.callbacks.EarlyStopping(monitor="val_loss", patience=50, verbose=1),
]
model.compile(
    optimizer="adam",
    loss="sparse_categorical_crossentropy",
    metrics=["sparse_categorical_accuracy"],
)
history = model.fit(
    x_train,
    y_train,
    batch_size=batch_size,
    epochs=epochs,
    callbacks=callbacks,
    validation_split=0.2,
    verbose=1,
)

【问题讨论】:

  • 非常感谢Sagi,问题解决了。

标签: python tensorflow conv-neural-network


【解决方案1】:

您的模型按预期运行。您的最后一层是使用 softmax 计算的,并生成一个数组,其中包含每个标签的“确定性”概率。

如果你想得到实际预测的标签,你可以使用argmax,连同正确的维度,它返回具有最大概率的索引(=标签)。在任何典型的拟合函数中,您通常可以看到在模型输出上使用argmax 计算精度。

【讨论】:

    猜你喜欢
    • 2020-08-22
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 2017-01-03
    • 1970-01-01
    • 2021-07-17
    相关资源
    最近更新 更多