在每个时期,我都会得到训练准确度,最后得到验证准确度。验证精度总是大于训练精度。
当我在真实的测试数据上进行测试时,我得到了很好的结果,但我怀疑我的模型是否过度拟合。我希望一个好的模型的 val 损失以与训练损失类似的方式收敛,但这并没有发生,而且 val 损失有时会波动到非常大的值这一事实让我感到担忧。
我确实尝试了几个带有步进调度程序的优化器(adam、sgd、adagrad)以及 pytorch 的 pleteu,我使用了步长等,但它并没有真正帮助,也没有剪切渐变。
我有一组边界框形式的对象注释。我有这些边界框的 x,y 和 x2y2 坐标。我希望使用 Matlab 的 imresize 或 opencv/python INTER_AREA 预处理图像并调整它们的大小。没有问题,但我希望找到边界框坐标的新位置。
理想情况下,我应该能够从 INTER_AREA 获取变换矩阵并将其应用于坐标,但尽管我浏览了大量内容,但我看不到这样做的方法。
谢谢。
我想提供一个与输入图像大小相同的掩码,并根据此掩码调整从图像中学习的权重(类似于注意力,但为每个图像输入预先计算)。如何使用 Keras(或 TensorFlow)做到这一点?
我正在训练一个小型网络,训练似乎进展顺利,val 损失减少,验证准确度达到 80 左右,一旦没有更多改进,它实际上会停止训练(耐心=10)。它训练了 40 个 epoch。然而,它只为每个测试图像预测一个类别!我尝试随机初始化转换层,我添加了正则化器,我从 Adam 切换到 SGD,我添加了 Clipvalue,我添加了 dropout。我还切换到了softmax(我只有两个标签,但我看到了一些关于使用softmax和带有2个神经元的密集层的建议)。其中一些或其中一项有助于解决过度拟合问题,但对预测问题没有任何作用。尽管数据集很小,但数据是平衡的,因此如果它也为评估集预测相同的标签,则达到 80% 是没有意义的。
我的模型有什么问题以及如何修复它?欢迎任何评论。
#Import some packages to use
import cv2
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from keras.preprocessing.image import ImageDataGenerator
import os
from keras.regularizers import l2
from keras.callbacks import EarlyStopping, ModelCheckpoint, ReduceLROnPlateau
from keras.layers.core import Dense, Dropout, Flatten
from keras.layers.convolutional import Conv2D, MaxPooling2D
from keras.initializers import RandomNormal
os.environ["CUDA_VISIBLE_DEVICES"]="0"
epochs = 200
callbacks = []
#schedule = None
decay = 0.0 …Run Code Online (Sandbox Code Playgroud) training-data neural-network deep-learning conv-neural-network keras
我正在尝试加载我自己的数据集,并且我使用了一个自定义Dataloader来读取图像和标签并将它们转换为 PyTorch 张量。然而,当Dataloader被实例化时,它返回字符串 x"image"和 y,"labels"而不是读取时的实际值或张量 ( iter)
print(self.train_loader) # shows a Tensor object
tic = time.time()
with tqdm(total=self.num_train) as pbar:
for i, (x, y) in enumerate(self.train_loader): # x and y are returned as string (where it fails)
if self.use_gpu:
x, y = x.cuda(), y.cuda()
x, y = Variable(x), Variable(y)
Run Code Online (Sandbox Code Playgroud)
这是dataloader.py这样的:
from __future__ import print_function, division #ds
import numpy as np
from utils import plot_images
import os #ds
import pandas …Run Code Online (Sandbox Code Playgroud) 我正在训练一个模型。为了克服过度拟合,我做了优化、数据增强等。我有一个更新的 LR(我尝试了 SGD 和 Adam),当出现平台期(也尝试过步骤)时,学习率会降低一个因子,直到达到达到 LR 1e-08 但不会低于该值,并且我的模型的验证在此之后陷入困境。我尝试将 epsilon 参数传递给 Adam 以建议较小的值,但它仍然卡在 LR 1e-08。我也经历了体重衰减,但这并没有改变情况。将 amsgrad 设置为 true 也没有。
我做了一些研究,人们认为 Adam 优化器存在固有的问题,但没有提到学习率 - 每次讨论都补充说,使用 SGD 就没有问题。
为什么是这样?这是一个错误还是因为作者认为它是一个毫无意义的小值而设计的?似乎对我的数据集设置较小的学习率确实有帮助,因为在学习率降至 LR 1e-08 之前一切似乎都很好。