1

我正在努力掌握神经网络的基础知识,并且正在努力理解 keras 层。

从 tensorflow 的教程中获取以下代码:

model = keras.Sequential([
    keras.layers.Flatten(input_shape=(28, 28)),
    keras.layers.Dense(128, activation=tf.nn.relu),
    keras.layers.Dense(10, activation=tf.nn.softmax)
])

所以这个网络有3层?第一个只是代表像素值的 28*28 节点。第二个是隐藏层,它从第一个中获取加权和,应用 relu,然后将它们发送到 10 个输出层,这些输出层是 softmaxed?

但是这个模型似乎需要对层进行不同的输入:

model = keras.Sequential([
layers.Dense(64, activation=tf.nn.relu, input_shape=[len(train_dataset.keys())]),
layers.Dense(64, activation=tf.nn.relu),
layers.Dense(1)
  ])

为什么输入层现在同时具有 aninput_shape和 a 值64?我读到第一个参数指定了第二层中的节点数,但这似乎与第一个示例中的代码不符。另外,为什么输入层有激活?这只是在它们进入网络之前对值进行限制吗?

另外,关于激活函数,为什么 softmax 和 relu 被视为替代品?我认为 relu 应用于单个节点的所有输入,而 softmax 作用于跨层的所有节点的输出?

非常感谢任何帮助!

第一个示例来自:https ://www.tensorflow.org/tutorials/keras/basic_classification

第二个例子来自:https ://www.tensorflow.org/tutorials/keras/basic_regression

4

1 回答 1

0

基本上你在 Keras 中有两种类型的 API:顺序和功能 API https://keras.io/getting-started/sequential-model-guide/

在 Sequential API 中,您没有明确引用输入层 Input https://keras.io/layers/core/#input

这就是为什么您需要添加一个来指定第一层input_shape的尺寸,

https://jovianlin.io/keras-models-sequential-vs-functional/中的更多信息

于 2019-04-26T11:20:27.127 回答