keras层中的参数在哪里适用?

时间:2019-04-26 11:09:22

标签: python tensorflow keras keras-layer tf.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)
  ])

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

此外,关于激活功能,为什么将softmax和relu视为替代品?我以为relu适用于单个节点的所有输入,而softmax作用于整个层上所有节点的输出?

我们非常感谢您的帮助!

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

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

1 个答案:

答案 0 :(得分:0)

基本上,Keras中有两种API:顺序API和功能性API https://keras.io/getting-started/sequential-model-guide/

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

这就是为什么您需要添加input_shape来指定第一层

的尺寸的原因

https://jovianlin.io/keras-models-sequential-vs-functional/

中的更多信息