Keras 使用模型对象的实例来包含神经网络。 对于熟悉 scikit-learn 的人来说,这可能是相当熟悉的。 略有不同的是 Keras 模型包含一组图层。 这一组层需要由我们定义。 只需很少的代码,就可以在网络架构中实现惊人的灵活性。
Keras 当前有两个用于构建模型的 API。 在我的示例中,我将使用功能性 API。 它稍微冗长一些,但可以提供更多的灵活性。 我建议尽可能使用功能性 API。
Keras 当前有两个用于构建模型的 API。 在我的示例中,我将使用函数式 API。 它稍微冗长一些,但可以提供更多的灵活性。 我建议尽可能使用函数式 API。
我们的 MLP 将需要一个输入层,一个隐藏层和一个输出层。
# 输入层形状
由于我们已经确定了输入,因此我们知道输入矩阵的行数等于数据集中的数据元素/观测值的数量,并且列数等于变量/功能的数量。 输入矩阵的形状为`(观察数量 x 10 个特征)`。 TensorFlow 和 Keras 可以在定义数据集中元素的数量时使用`None`作为占位符,而不是定义数据集中或小批量中的确切记录数。
由于我们已经确定了输入,因此我们知道输入矩阵的行数等于数据集中的数据元素/观测值的数量,并且列数等于变量/特征的数量。 输入矩阵的形状为`(观察数量 x 10 个特征)`。 TensorFlow 和 Keras 可以在定义数据集中元素的数量时使用`None`作为占位符,而不是定义数据集中或小批量中的确切记录数。
如果看到 Keras 或 TensorFlow 模型层形状中使用了`None`维度,则它实际上表示任意维度,该维度可以采用任何正整数值。
...
...
@@ -207,9 +207,9 @@ model.fit(x=data["train_X"], y=data["train_y"], batch_size=32, epochs=200, verbo
Keras 功能 API 与 scikit-learn 中可能使用的 API 之间的区别是`.predict()`方法的行为。 当使用 Keras 时,对于`n`个样本中的每个,`.predict()`将返回`k`类概率的`nxk`矩阵。 对于二分类器,将只有一列,即类别 1 的类别概率。这使 Keras `.predict()`更像 scikit-learn 中的`.predict_proba()`。
Keras 函数式 API 与 scikit-learn 中可能使用的 API 之间的区别是`.predict()`方法的行为。 当使用 Keras 时,对于`n`个样本中的每个,`.predict()`将返回`k`类概率的`nxk`矩阵。 对于二分类器,将只有一列,即类别 1 的类别概率。这使 Keras `.predict()`更像 scikit-learn 中的`.predict_proba()`。