我试图掌握神经网络的基础知识,并努力理解角膜层。
从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
答案 0 :(得分:0)
基本上,Keras中有两种API:顺序API和功能性API https://keras.io/getting-started/sequential-model-guide/
在顺序API中,您没有明确引用输入层 Input
https://keras.io/layers/core/#input
这就是为什么您需要添加input_shape
来指定第一层,