简单的例子
network = models.Sequential()
layer1 = layers.Dense(512, activation='relu', input_shape=(28*28,))
layer2 = layers.Dense(10, activation='softmax')
network.add(layer1)
network.add(layer2)
network.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
network.fit(train_images, train_lable, epochs=5, batch_size=128)
本例中的网络包含 2 个 Dense 层,它们是密集连接(也叫全连接)的神经层。第二层(也
是最后一层)是一个 10 路 softmax 层,它将返回一个由 10 个概率值(总和为 1)组成的数组。
每个概率值表示当前数字图像属于 10 个数字类别中某一个的概率。
要想训练网络,我们还需要选择编译(compile)步骤的三个参数。
损失函数(loss function):网络如何衡量在训练数据上的性能,即网络如何朝着正确的
方向前进。
优化器(optimizer):基于训练数据和损失函数来更新网络的机制。
在训练和测试过程中需要监控的指标(metric):本例只关心精度,即正确分类的图像所
占的比例。
前三章使用到的激活函数(activation):
1. relu
2. softmax-手写数字识别、新闻分类,多分类问题
3. sigmoid-电影评论分论,二分类问题
4. 不需要激活函数,例如波士顿房价线性回归的例子
优化器(optimizer):
rmsprop
损失函数(loss):
categorical_crossentropy-手写数字识别、新闻分类,多分类问题
binary_crossentropy-电影评论分论,二分类问题
mse-波士顿房价,线性回归问题
监控指标(metric)
accuracy
acc,用于交叉熵的损失函数
mae,用于mse的损失函数
模型另外的接口:
模型的预测:
predictions = model.predict(x_test)
模型的评估:
test_loss, test_acc = network.evaluate(test_images, test_lable)