代码之家  ›  专栏  ›  技术社区  ›  Cameron Blake

基于Keras的误差多分类神经网络

  •  2
  • Cameron Blake  · 技术社区  · 6 年前

    我从我的NN代码中收到了一个相当恼人的错误,希望对Keras的工作方式有更深入了解的人可以向我解释为什么我会遇到这个错误。非常感谢您的帮助! 错误:

    AttributeError: 'DirectoryIterator' object has no attribute 'ndim'
    

    错误来自:

        Traceback (most recent call last):
        File "C:\Users\Cameron\Desktop\AI\CubeFieldNN_Train -fix.py", line 80, in <module>
        validation_steps = (validation_samples / batch_size))
    

    代码:

    NN.fit(
    train_set, train_labels,
    batch_size = batch_size,
    epochs = epochs,
    validation_data = (validation_set, validation_labels),
    validation_steps = (validation_samples / batch_size))
    

    完整代码: https://pastebin.com/V1YwJW3X

    完全错误:

        Traceback (most recent call last):
      File "C:\Users\Cameron\Desktop\AI\CubeFieldNN_Train -fix.py", line 80, in <module>
        validation_steps = (validation_samples / batch_size))
      File "C:\Python\lib\site-packages\keras\models.py", line 1002, in fit
        validation_steps=validation_steps)
      File "C:\Python\lib\site-packages\keras\engine\training.py", line 1630, in fit
        batch_size=batch_size)
      File "C:\Python\lib\site-packages\keras\engine\training.py", line 1476, in _standardize_user_data
        exception_prefix='input')
      File "C:\Python\lib\site-packages\keras\engine\training.py", line 76, in _standardize_input_data
        data = [np.expand_dims(x, 1) if x is not None and x.ndim == 1 else x for x in data]
      File "C:\Python\lib\site-packages\keras\engine\training.py", line 76, in <listcomp>
        data = [np.expand_dims(x, 1) if x is not None and x.ndim == 1 else x for x in data]
    AttributeError: 'DirectoryIterator' object has no attribute 'ndim'
    
    1 回复  |  直到 6 年前
        1
  •  -1
  •   Aechlys    6 年前

    过渡到 fit 从…起 fit_generator 从您的 previous question 其实没有必要。 这个 flow_from_directory 返回一个生成器类型对象,该对象返回数据和标签的元组。类似于 validation_set 。此外,请注意,如果您指定 validation_steps 您还必须指定 steps_per_epoch 。因此,您可以使用:

    NN.fit_generator(train_set,
                     steps_per_epoch=steps_per_epoch,
                     epochs=epochs,
                     validation_data=validation_set,
                     validation_steps=validation_steps)
    

    或者,您可以一次加载所有图像并将其传递给 NN.fit() 与标签一起工作。