Reputation: 97
I am following a tutorial on tensorflow computer vision. I am new to tensorflow.
conda version : 4.8.3
python version : 3.7.6.final.0
tensorflow : 2.1.0
keras : 2.3.1
The following code is written for a model to recognize rock-paper-scissors from photos of hands. The training as well as test dataset directories are as follows :
rps ( or rps-test) --
-- rock
-- paper
--scissors
The labels are to be generated from folder names for each pic, as I understood from the tutorial. But code below is giving following error :
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)
Upvotes: 0
Views: 1159
Reputation: 963
I think it might be validation_data = validation_generator instead of validation_datagen.
In addition as the error suggest, check if validation_generator and train_generator
are not None.
Upvotes: 2