【发布时间】: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