[英]Keras Tensorflow multiple errors
I was programming on CodeCademy and got stuck.我在 CodeCademy 上编程并被卡住了。 I cant find the answer and the terminal is showing some strange stuff.我找不到答案,终端显示一些奇怪的东西。 The project is about classifing images of covid-19, Pneumonia and normal lungs.该项目是关于对 covid-19、肺炎和正常肺的图像进行分类。 Hope you can help me.希望您能够帮助我。
Code:代码:
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.callbacks import EarlyStopping
from tensorflow.keras import layers
import matplotlib.pyplot as plt
import app
training_generator = ImageDataGenerator(rescale = 1./255)
training_iterator = training_generator.flow_from_directory("augmented-data/train", class_mode='categorical',color_mode='grayscale', batch_size=5)
validation_generator = ImageDataGenerator(rescale = 1./255)
validation_iterator = validation_generator.flow_from_directory("augmented-data/test", class_mode='categorical',color_mode='grayscale', batch_size=5)
model = Sequential()
model.add(tf.keras.Input(shape=training_iterator.image_shape))
model.add(tf.keras.layers.Conv2D(8, 3, strides = 2, activation = "relu"))
model.add(tf.keras.layers.MaxPooling2D(pool_size = (2, 2), strides = (2, 2)))
model.add(tf.keras.layers.Conv2D(8, 3, strides = 2, activation = "relu"))
model.add(tf.keras.layers.MaxPooling2D(pool_size = (2, 2), strides = (2, 2)))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(16, activation = "relu"))
model.add(tf.keras.layers.Dense(4, activation = "relu"))
model.compile(optimizer = tf.keras.optimizers.Adam(learning_rate = 0.01), loss = tf.keras.losses.CategoricalCrossentropy(), metrics = [tf.keras.metrics.CategoricalAccuracy(),tf.keras.metrics.AUC()])
model.fit(training_iterator, steps_per_epoch = training_iterator.samples / 5, epochs = 5, validation_data = validation_iterator, validation_steps = validation_iterator.samples / 5)
Error:错误:
Traceback (most recent call last):
File "script.py", line 31, in <module>
model.fit(training_iterator, steps_per_epoch = training_iterator.samples / 5, epochs = 5, validation_data = validation_iterator, validation_steps = validation_iterator.samples / 5)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py", line 66, in _method_wrapper
return method(self, *args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py", line 848, in fit
tmp_logs = train_function(iterator)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/def_function.py", line 580, in __call__
result = self._call(*args, **kwds)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/def_function.py", line 644, in _call
return self._stateless_fn(*args, **kwds)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/function.py", line 2420, in __call__
return graph_function._filtered_call(args, kwargs) # pylint: disable=protected-access
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/function.py", line 1665, in _filtered_call
self.captured_inputs)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/function.py", line 1746, in _call_flat
ctx, args, cancellation_manager=cancellation_manager))
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/function.py", line 598, in call
ctx=ctx)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/execute.py", line 60, in quick_execute
inputs, attrs, num_outputs)
tensorflow.python.framework.errors_impl.InvalidArgumentError: Incompatible shapes: [5,3] vs. [5,4]
[[node categorical_crossentropy/mul (defined at script.py:31) ]] [Op:__inference_train_function_1137]
Function call stack:
train_function
The project is about classifing images of covid-19, Pneumonia and normal lungs.该项目是关于对 covid-19、肺炎和正常肺的图像进行分类。
As you stated, you have 3 classes, but in the last dense layer, your output layer has 4 neurons, which is incompatible, also having 'relu'
as activation, which is another mistake.正如您所说,您有 3 个类,但在最后一个密集层中,您的 output 层有 4 个神经元,这是不兼容的,也有'relu'
作为激活,这是另一个错误。
You should change last dense layer to:您应该将最后一个密集层更改为:
model.add(tf.keras.layers.Dense(3, activation = tf.nn.softmax))
Your data does not match your model architecture您的数据与您的 model 架构不匹配
Incompatible shapes: [5,3] vs. [5,4]
To debug these types of errors, try adding the run_eagerly=False
parameter to your model.compile
function;要调试这些类型的错误,请尝试将run_eagerly=False
参数添加到您的model.compile
function; the errors become a little more readable.错误变得更具可读性。
https://www.tensorflow.org/api_docs/python/tf/keras/Model#compile https://www.tensorflow.org/api_docs/python/tf/keras/Model#compile
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.