如何解决使用ImageDataGenerator时出错-Tensorflow
我正在学习TensorFlow,并尝试使用ImageDataGenerator将Kaggle上的上载MNIST数据集加载到我的模型中。 下面是我编写的代码。
import tensorflow as tf
image_generator = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255)
train_generator = image_generator.flow_from_directory(
'/kaggle/input/mnist-images/MNIST_images/trainingSet/',target_size=(28,28),batch_size=128,class_mode='categorical'
)
model = tf.keras.Sequential([
tf.keras.layers.Conv2D(16,(3,3),activation='relu',input_shape=(28,28,1)),tf.keras.layers.MaxPool2D(2,2),tf.keras.layers.Conv2D(32,activation='relu'),tf.keras.layers.Conv2D(64,tf.keras.layers.Flatten(),tf.keras.layers.Dense(128,activation = tf.nn.relu),tf.keras.layers.Dense(10,activation=tf.nn.softmax)
])
model.compile(optimizer='adam',loss=tf.losses.CategoricalCrossentropy(),metrics=['accuracy'])
model.fit(train_generator,epochs=2,verbose=2)
ImageDataGenerator可以正确加载训练数据,还可以打印找到的正确训练示例。但是当我执行模型时,出现以下错误
---------------------------------------------------------------------------
NotFoundError Traceback (most recent call last)
<ipython-input-5-f34d8da40c16> in <module>
----> 1 model.fit(train_generator,verbose=2)
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py in _method_wrapper(self,*args,**kwargs)
64 def _method_wrapper(self,**kwargs):
65 if not self._in_multi_worker_mode(): # pylint: disable=protected-access
---> 66 return method(self,**kwargs)
67
68 # Running inside `run_distribute_coordinator` already.
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py in fit(self,x,y,batch_size,epochs,verbose,callbacks,validation_split,validation_data,shuffle,class_weight,sample_weight,initial_epoch,steps_per_epoch,validation_steps,validation_batch_size,validation_freq,max_queue_size,workers,use_multiprocessing)
846 batch_size=batch_size):
847 callbacks.on_train_batch_begin(step)
--> 848 tmp_logs = train_function(iterator)
849 # Catch OutOfRangeError for Datasets of unknown size.
850 # This blocks until the batch has finished executing.
/opt/conda/lib/python3.7/site-packages/tensorflow/python/eager/def_function.py in __call__(self,**kwds)
578 xla_context.Exit()
579 else:
--> 580 result = self._call(*args,**kwds)
581
582 if tracing_count == self._get_tracing_count():
/opt/conda/lib/python3.7/site-packages/tensorflow/python/eager/def_function.py in _call(self,**kwds)
642 # Lifting succeeded,so variables are initialized and we can run the
643 # stateless function.
--> 644 return self._stateless_fn(*args,**kwds)
645 else:
646 canon_args,canon_kwds = \
/opt/conda/lib/python3.7/site-packages/tensorflow/python/eager/function.py in __call__(self,**kwargs)
2418 with self._lock:
2419 graph_function,args,kwargs = self._maybe_define_function(args,kwargs)
-> 2420 return graph_function._filtered_call(args,kwargs) # pylint: disable=protected-access
2421
2422 @property
/opt/conda/lib/python3.7/site-packages/tensorflow/python/eager/function.py in _filtered_call(self,kwargs)
1663 if isinstance(t,(ops.Tensor,1664 resource_variable_ops.BaseResourceVariable))),-> 1665 self.captured_inputs)
1666
1667 def _call_flat(self,captured_inputs,cancellation_manager=None):
/opt/conda/lib/python3.7/site-packages/tensorflow/python/eager/function.py in _call_flat(self,cancellation_manager)
1744 # No tape is watching; skip to running the function.
1745 return self._build_call_outputs(self._inference_function.call(
-> 1746 ctx,cancellation_manager=cancellation_manager))
1747 forward_backward = self._select_forward_and_backward_functions(
1748 args,/opt/conda/lib/python3.7/site-packages/tensorflow/python/eager/function.py in call(self,ctx,cancellation_manager)
596 inputs=args,597 attrs=attrs,--> 598 ctx=ctx)
599 else:
600 outputs = execute.execute_with_cancellation(
/opt/conda/lib/python3.7/site-packages/tensorflow/python/eager/execute.py in quick_execute(op_name,num_outputs,inputs,attrs,name)
58 ctx.ensure_initialized()
59 tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle,device_name,op_name,---> 60 inputs,num_outputs)
61 except core._NotOkStatusException as e:
62 if name is not None:
NotFoundError: No algorithm worked!
[[node sequential/conv2d/Conv2D (defined at <ipython-input-5-f34d8da40c16>:1) ]] [Op:__inference_train_function_877]
Function call stack:
train_function
在这个练习示例中,我并不担心模型的体系结构或性能,而只是对了解ImageDataGenerator的工作感兴趣
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。