我正在努力掌握神经网络的基础知识,并且正在努力理解 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