简体   繁体   English

Keras Tensorflow 多个错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM