python - 训练神经网络给出多种准确度,然后数量开始减少,准确度停滞不前
问题描述
我正在尝试训练我的模型,并且在模型正在训练时,会打印多个准确度,然后随着同一时期的训练进行而被删除。
我在新时代看到了 3 个 ETA,而它应该只有 1 个。
训练精度也没有提高。我尝试了 15 个 epoch,甚至训练精度保持不变。
model = tf.keras.models.Sequential([tf.keras.layers.Conv2D(64,kernel_size = (3,3), input_shape=(X_train.shape[1:]),activation = 'relu'),
tf.keras.layers.Conv2D(64,kernel_size = (3,3),activation = 'relu'),
tf.keras.layers.MaxPooling2D(pool_size = (2,2), strides = (2,2)),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Conv2D(64,kernel_size = (3,3),activation = 'relu'),
tf.keras.layers.Conv2D(64,kernel_size = (3,3),activation = 'relu'),
tf.keras.layers.MaxPooling2D(pool_size = (2,2), strides = (2,2)),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Conv2D(128,kernel_size = (3,3),activation = 'relu'),
tf.keras.layers.Conv2D(128,kernel_size = (3,3),activation = 'relu'),
tf.keras.layers.MaxPooling2D(pool_size = (2,2), strides = (2,2)),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(8*128, activation = 'relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(8*128, activation = 'relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(7, activation = 'softmax')])
model.compile( optimizer = 'SGD', loss = tf.keras.losses.categorical_crossentropy, metrics = ['accuracy'])
model.fit(X_train, y_train, epochs = 2, verbose = 1, shuffle = True, batch_size = 64, validation_split=0.05)
解决方案
一世。您会看到多重准确性,因为正在处理多个批次。所有这些都在以后合并。别担心。这是一个正常的过程。但是,如果您仍然想了解更多信息,请查看 tensorflow 多处理和反向传播。
ii. 这取决于您的数据。为了提高准确性,您可以尝试以下操作:
预处理您的数据。
尝试使用增强
也许您的数据需要更复杂的架构。尝试添加更多层。我会先尝试删除 dropout 层。
还请尝试以更高的学习率训练相同的架构 15-20 个 epoch。如果您仍然看不出有什么不同,请尝试上述方法。
推荐阅读
- python - 使用 Argparse 从相对路径获取完整路径
- python - 从熊猫单元格内的列表中删除括号
- javascript - 安装后 Docker 'container ls --all' 不工作
- sql-server - 对 TextBox Reporting Services 2017 中的不同值求和
- c# - Expression.Call 跳过或接受
- javascript - 大负载的连接重置错误
- android - 如何在自定义视图中修复捏缩放焦点?
- git - 从 GIT 触发到 Jenkins buildWithParameters 忽略管道中的参数值
- properties - NSStringto 类成员分配崩溃
- python - 如何知道分配给个人 p1 的孩子数量?