【发布时间】:2022-06-22 21:52:49
【问题描述】:
如何向 TensorFlow 神经网络添加额外的层并知道额外的层不会过拟合???似乎 2 层不会很有帮助,但它确实给了我 91% 的准确率,我想要 100% 的准确率。所以我想添加 5 到 10 个额外的层,并尝试“过度拟合”神经网络。过拟合在训练集上总是能提供 100% 的准确率吗?
神经网络的基本构建块是layer。
我正在使用来自https://www.tensorflow.org/tutorials/keras/classification的模型示例
model = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(10)
])
model.fit(train_images, train_labels, epochs=10)
该网络的第一层将图像格式从二维数组(28 x 28 像素)转换为一维数组(28 * 28 = 784 像素)。将这一层想象成图像中的像素行拆开并排列起来。该层没有要学习的参数;它只会重新格式化数据。
目前这个例子在像素被展平后,网络由两个tf.keras.layers.Dense层或完全连接的神经层组成。第一个Dense 层有 128 个节点(或神经元)。第二层(也是最后一层)返回一个长度为 10 的数组。
问题:我想先添加一个额外的层,然后过拟合说 5 层。如何手动添加一个附加层并适合该层?我可以指定 5 个附加层而不必指定每一层吗?在给定大小(例如 30x30 像素)的图像数据集上“过度拟合”的典型估计是什么?
添加一个附加层给了我同样的准确性。
Epoch 1/10
1875/1875 [==============================] - 9s 5ms/step - loss: 0.4866 - accuracy: 0.8266
Epoch 2/10
1875/1875 [==============================] - 8s 4ms/step - loss: 0.3619 - accuracy: 0.8680
Epoch 3/10
1875/1875 [==============================] - 8s 4ms/step - loss: 0.3278 - accuracy: 0.8785
Epoch 4/10
1875/1875 [==============================] - 8s 4ms/step - loss: 0.3045 - accuracy: 0.8874
Epoch 5/10
1875/1875 [==============================] - 8s 4ms/step - loss: 0.2885 - accuracy: 0.8929
Epoch 6/10
1875/1875 [==============================] - 8s 4ms/step - loss: 0.2727 - accuracy: 0.8980
Epoch 7/10
1875/1875 [==============================] - 8s 4ms/step - loss: 0.2597 - accuracy: 0.9014
Epoch 8/10
1875/1875 [==============================] - 9s 5ms/step - loss: 0.2475 - accuracy: 0.9061
Epoch 9/10
1875/1875 [==============================] - 9s 5ms/step - loss: 0.2386 - accuracy: 0.9099
Epoch 10/10
1875/1875 [==============================] - 10s 5ms/step - loss: 0.2300 - accuracy: 0.9125
【问题讨论】:
-
是模型的正确方法 = tf.keras.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28)), tf.keras.layers.Dense(128,激活='relu'), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dense(10) ])
标签: tensorflow