【问题标题】:Tensorflow fit_generator gives ValueErrorTensorFlow fit_generator 给出 ValueError
【发布时间】:2020-05-20 06:59:20
【问题描述】:

我正在关注关于 tensorflow 计算机视觉的教程。我是张量流的新手。

conda 版本:4.8.3

python 版本:3.7.6.final.0

张量流:2.1.0

keras:2.3.1

以下代码是为一个模型编写的,用于从手的照片中识别石头剪刀布。 训练和测试数据集目录如下:

rps ( or rps-test) --
       -- rock
       -- paper
       --scissors

标签将从每张图片的文件夹名称中生成,正如我从教程中了解到的那样。 但是下面的代码给出了以下错误:

Found 2520 images belonging to 3 classes.
Found 372 images belonging to 3 classes.
2020-05-19 12:16:49.623528: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
WARNING:tensorflow:From c:/Users/IROC/Desktop/FashionMNIST/zip handling.py:55: Model.fit_generator (from tensorflow.python.keras.engine.training) is deprecated and will be removed in a future version.
Instructions for updating:
Please use Model.fit, which supports generators.
WARNING:tensorflow:sample_weight modes were coerced from
  ...
    to
  ['...']
Traceback (most recent call last):
  File "c:/Users/IROC/Desktop/FashionMNIST/zip handling.py", line 55, in <module>
    history = model.fit_generator(train_generator ,epochs = 5, validation_data = validation_datagen, verbose = 1)
  File "C:\Users\IROC\Anaconda3\lib\site-packages\tensorflow_core\python\util\deprecation.py", line 324, in new_func
    return func(*args, **kwargs)
  File "C:\Users\IROC\Anaconda3\lib\site-packages\tensorflow_core\python\keras\engine\training.py", line 1306, in fit_generator
    initial_epoch=initial_epoch)
  File "C:\Users\IROC\Anaconda3\lib\site-packages\tensorflow_core\python\keras\engine\training.py", line 819, in fit
    use_multiprocessing=use_multiprocessing)
  File "C:\Users\IROC\Anaconda3\lib\site-packages\tensorflow_core\python\keras\engine\training_v2.py", line 235, in fit
    use_multiprocessing=use_multiprocessing)
  File "C:\Users\IROC\Anaconda3\lib\site-packages\tensorflow_core\python\keras\engine\training_v2.py", line 614, in _process_training_inputs
    distribution_strategy=distribution_strategy)
  File "C:\Users\IROC\Anaconda3\lib\site-packages\tensorflow_core\python\keras\engine\training_v2.py", line 636, in _process_inputs
    adapter_cls = data_adapter.select_data_adapter(x, y)
  File "C:\Users\IROC\Anaconda3\lib\site-packages\tensorflow_core\python\keras\engine\data_adapter.py", line 998, in select_data_adapter
    _type_name(x), _type_name(y)))
ValueError: Failed to find data adapter that can handle input: <class 'tensorflow.python.keras.preprocessing.image.ImageDataGenerator'>, <class 'NoneType'>
import tensorflow as tf
from keras_preprocessing.image.image_data_generator import ImageDataGenerator

import os
import zipfile

training_dir = './datasets/rps/'
validation_dir = './datasets/rps-test-set/'


training_datagen = ImageDataGenerator(rescale = 1./255)
train_generator = training_datagen.flow_from_directory(
    directory = './datasets/rps/',
    target_size = (300,300),
    class_mode = 'categorical'
)


validation_datagen = ImageDataGenerator(rescale = 1./255)
validation_generator = training_datagen.flow_from_directory(
    directory = './datasets/rps-test-set/',
    target_size = (300,300),
    class_mode = 'categorical'
)

model = tf.keras.models.Sequential([
    tf.keras.layers.Conv2D(64, (3,3), activation = 'relu', input_shape = (300,300,3)),
    tf.keras.layers.MaxPooling2D(2,2),
    tf.keras.layers.Conv2D(64, (3,3), activation = 'relu'),
    tf.keras.layers.MaxPooling2D(2,2),
    tf.keras.layers.Conv2D(128, (3,3), activation = 'relu'),
    tf.keras.layers.MaxPooling2D(2,2),
    tf.keras.layers.Conv2D(128,(3,3), activation= 'relu'),
    tf.keras.layers.MaxPooling2D(2,2),

    tf.keras.layers.Flatten(),
    tf.keras.layers.Dropout(0.5),

    tf.keras.layers.Dense(512, activation = 'relu'),
    tf.keras.layers.Dense(3, activation = 'softmax')
])

model.compile(loss = 'categorical_crossentropy', optimizer = 'rmsprop', metrics = ['accuracy'])

history = model.fit_generator(train_generator ,epochs = 5, validation_data = validation_datagen, verbose = 1)

【问题讨论】:

  • validation_generator = training_datagen.flow_from_directory 应该是 validation_generator = >>validation_datagen

标签: python tensorflow keras computer-vision


【解决方案1】:

我认为可能是validation_data = validation_generator 而不是validation_datagen。

除了错误提示,检查validation_generator和train_generator

不是无。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-08-21
  • 2019-01-05
  • 2021-07-20
  • 2020-04-29
  • 1970-01-01
  • 2021-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多