【问题标题】:Error trying to train the neural network - 'Namespace' object has no attribute 'steps_for_validation'尝试训练神经网络时出错 - “命名空间”对象没有属性“steps_for_validation”
【发布时间】:2020-04-11 17:15:23
【问题描述】:

我正在学习一个名为“使用 TensorFlow 2 和 Keras 使用 Python 对自定义数据集进行对象检测”的教程

我正在 link https://colab.research.google.com/drive/1TdhgBFaMxsaxl8sBKtCpT-itMxiphliu 从事 colab 工作

问题是当我尝试在这一行中训练神经网络时出现问题:

'/content/keras-retinanet/keras_retinanet/bin/train.py' --freeze-backbone --random-transform --weights {'/content/keras-retinanet/snapshots/_pretrained_model.h5'} - -batch-size 8 --steps 500 --epochs 10 csv '/content/keras-retinanet/annotations.csv' '/content/keras-retinanet/classes.csv'

抛出错误:

File "/content/keras-retinanet/keras_retinanet/bin/train.py", line 521, in main
     validation_steps = args.steps_for_validation,
AttributeError: 'Namespace' object has no attribute 'steps_for_validation'

问题所在的train.py代码是这样的:

# start training
    return training_model.fit_generator(
        generator=train_generator,
        steps_per_epoch=args.steps,
        epochs=args.epochs,
        verbose=1,
        callbacks=callbacks,
        workers=args.workers,
        use_multiprocessing=args.multiprocessing,
        max_queue_size=args.max_queue_size,
        validation_steps = args.steps_for_validation,
        validation_data=validation_generator,
        initial_epoch=args.initial_epoch
    )

但是我不能很好地理解问题,因为没有属性错误。

我也在关注这个 github 页面,发现同样的错误出现here

感谢您的每一个帮助

【问题讨论】:

  • 请分享您的代码
  • @AdamStrauss in this link 这是我的代码colab.research.google.com/drive/…我正在研究colab。
  • @Sebastián 您已经粘贴了很长的代码页,但我们需要帮助您的是train.py 的源代码,您应该在此处粘贴,如果它很长,请在此处粘贴或链接。或者更好的是,您应该尝试自己理解问题并提出一个可以重现相同问题的更简单的案例。
  • @satoru 编辑的问题
  • @Sebastián 好像是keras-retinanet的bug。

标签: python python-3.x tensorflow keras object-detection


【解决方案1】:

keras-retinanet 库的train.py 文件存在问题。

如果您查看其代码,在解析parse_args 函数中的参数时,它们已使用parser.add_argument() 函数为除steps_for_validationmax_queue_sizeinitial_epoch 之外的所有参数添加默认值。

解决方法是

  1. fit_generator() 函数调用中删除这些行或
  2. 从命令行传递参数及其名称或
  3. keras_retinanet 库中为这三个参数添加parser.add_argument() 函数调用,如果需要,构建它。

虽然我建议使用第一种解决方法,以防您不知道这些参数在做什么以及它的默认参数应该是什么。

【讨论】:

    猜你喜欢
    • 2020-10-02
    • 1970-01-01
    • 2018-10-30
    • 2019-06-22
    • 2012-02-10
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多