Python Tensorflow拟合_生成器给出值错误

Python Tensorflow拟合_生成器给出值错误,python,tensorflow,keras,computer-vision,Python,Tensorflow,Keras,Computer Vision,我正在学习tensorflow计算机视觉教程。我是tensorflow的新手 康达版本:4.8.3 python版本:3.7.6.final.0 tensorflow:2.1.0 keras:2.3.1 下面的代码是为一个模型编写的,该模型可以从手的照片中识别石头剪刀。 培训和测试数据集目录如下所示: rps ( or rps-test) -- -- rock -- paper --scissors 标签将从每个图片的文件夹名生成,正如我在教程中所理解

我正在学习tensorflow计算机视觉教程。我是tensorflow的新手

康达版本:4.8.3

python版本:3.7.6.final.0

tensorflow: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'>

我认为它可能是validation\u data=validation\u generator,而不是validation\u datagen

此外,根据错误提示,检查验证\u生成器和列车\u生成器


没有

您能否简要解释一下这一代是如何工作的,即为每个pic生成标签并进行编译?如果有帮助,请看一下:验证\u生成器=培训\u datagen.flow\u from\u directory应该是验证\u生成器=>>验证\u datagen
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)