训练和评估模型(with Keras)

一、使用内置的训练和评估

使用内置api(model.fit(), model.evaluate(), model.predict())


def buildInTrainAndEvaluate():
    inputs = keras.Input(shape=(784,), name='digits')

    x = layers.Dense(64, activation='relu', name='dense_1')(inputs)
    x = layers.Dense(64, activation='relu', name='dense_2')(x)
    outputs = layers.Dense(10, activation='softmax', name='predictions')(x)
    # 构建模型
    model = keras.Model(inputs=inputs, outputs=outputs)

    # 加载数据
    (x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
    # 归一化
    x_train = x_train.reshape(60000, 784).astype('float32') / 255
    x_test = x_test.reshape(10000, 784).astype('float32') / 255

    y_train = y_train.astype('float32')
    y_test = y_test.astype('float32')

    # 拆分数据和标签
    x_val = x_train[-10000:]
    y_val = y_train[-10000:]
    x_train = x_train[:-10000]
    y_train = y_train[:-10000]

    # 编译模型, 设置训练参数(optimizer, loss, metrics)
    model.compile(optimizer=keras.optimizers.RMSprop(),  # Optimizer
                  # Loss function to minimize
                  loss=keras.losses.SparseCategoricalCrossentropy(),
                  # List of metrics to monitor
                  metrics=[keras.metrics.SparseCategoricalAccuracy()])

    # 训练模型
    print('# Fit model on training data')
    history = model.fit(x_train, y_train,
                    batch_size=64,
                    epochs=3,
                    validation_data=(x_val, y_val))
    print('\nhistory dict:', history.history)


    # 评估模型
    print('\n# Evaluate on test data')
    results = model.evaluate(x_test, y_test, batch_size=128)
    print('test loss, test acc:', results)

    # 使用模型对新数据预测
    print('\n# Generate predictions for 3 samples')
    predictions = model.predict(x_test[:3])
    print('predictions shape:', predictions.shape)

二、自定义训练和评估模型

2.1、构造模型

2.2、编译模型

2.3、训练模型

2.4、评估模型

2.5、预测

发布了784 篇原创文章 · 获赞 90 · 访问量 44万+

猜你喜欢

转载自blog.csdn.net/wuxintdrh/article/details/103593042