我的val_loss波动并且每5步我的val_los很高

时间:2019-11-22 05:57:02

标签: python tensorflow keras tf.keras

我找到了一个非常有用的网站来学习ResNet,并且使用他的代码来训练我的图像,但是我发现我的val_loss波动并且每5个循环我的val_loss会很高,您可以看到我的val_loss会如此高,每5个时期{{3 }}

我的批处理大小是5,而我的时代是32,我使用的优化器是sgd = opt = SGD(lr=1e-1, momentum=0.9, decay=1e-1 / NUM_EPOCHS)

有人可以向我解释为什么会这样吗?非常感谢 这是我的代码`#用法      #python save_model.py-数据集疟疾-模型save_model.model

 import matplotlib
 matplotlib.use("Agg")

 # import the necessary packages
from keras.preprocessing.image import ImageDataGenerator
from keras.optimizers import SGD
from pyimagesearch.resnet import ResNet
from sklearn.metrics import classification_report
from imutils import paths
import matplotlib.pyplot as plt
import numpy as np
import argparse
import os

# construct the argument parser and parse the arguments
ap = argparse.ArgumentParser()
ap.add_argument("-d", "--dataset", type=str, required=True,
help="path dataset of input images")
ap.add_argument("-m", "--model", type=str, required=True,
help="path to trained model")
ap.add_argument("-p", "--plot", type=str, default="plot.png",
help="path to output loss/accuracy plot")
args = vars(ap.parse_args())

# initialize the number of training epochs and batch size
NUM_EPOCHS = 25
BS = 5

TRAIN_PATH = os.path.sep.join([args["dataset"], "training"])
VAL_PATH = os.path.sep.join([args["dataset"], "validation"])
TEST_PATH = os.path.sep.join([args["dataset"], "testing"])



totalTrain = len(list(paths.list_images(TRAIN_PATH)))
totalVal = len(list(paths.list_images(VAL_PATH)))
totalTest = len(list(paths.list_images(TEST_PATH)))

trainAug = ImageDataGenerator(
  rescale=1 / 255.0,
  rotation_range=20,
  zoom_range=0.05,
  width_shift_range=0.05,
  height_shift_range=0.05,
  shear_range=0.05,
  horizontal_flip=True,
  fill_mode="nearest")

 # initialize the validation (and testing) data augmentation object
  valAug = ImageDataGenerator(rescale=1 / 255.0)


  trainGen = trainAug.flow_from_directory(
   TRAIN_PATH,
   class_mode="categorical",
   target_size=(64, 64),
   color_mode="rgb",
   shuffle=True,
   batch_size=32)


  valGen = valAug.flow_from_directory(
     VAL_PATH,
     class_mode="categorical",
     target_size=(64, 64),
     color_mode="rgb",
     shuffle=False,
     batch_size=BS)


    testGen = valAug.flow_from_directory(
     TEST_PATH,
     class_mode="categorical",
     target_size=(64, 64),
     color_mode="rgb",
     shuffle=False,
     batch_size=BS)

   model = ResNet.build(64, 64, 3, 2, (2, 2, 3),
   (32, 64, 128, 256), reg=0.0005)
   opt = SGD(lr=1e-1, momentum=0.9, decay=1e-1 / NUM_EPOCHS)
   model.compile(loss="binary_crossentropy", optimizer=opt,
     metrics=["accuracy"])

      H = model.fit_generator(
        trainGen,
        steps_per_epoch=totalTrain // BS,
        validation_data=valGen,
        validation_steps=totalVal // BS,
        epochs=NUM_EPOCHS)



         print("[INFO] evaluating network...")
         testGen.reset()
          predIdxs = model.predict_generator(testGen,
         steps=(totalTest // BS) + 1)


        predIdxs = np.argmax(predIdxs, axis=1)

      print(classification_report(testGen.classes, predIdxs,
          target_names=testGen.class_indices.keys()))

0 个答案:

没有答案