【问题标题】:Keras Tensorflow multiple errorsKeras TensorFlow 多个错误
【发布时间】:2021-01-31 19:47:07
【问题描述】:

我在 CodeCademy 上编程时卡住了。我找不到答案,终端显示一些奇怪的东西。该项目是关于对 covid-19、肺炎和正常肺的图像进行分类。希望你能帮助我。

代码:

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)

错误:

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

【问题讨论】:

    标签: python python-3.x tensorflow keras


    【解决方案1】:

    该项目是关于对 covid-19、肺炎和 正常的肺。

    正如你所说,你有 3 个类,但在最后一个密集层中,你的输出层有 4 个神经元,这是不兼容的,还有'relu' 作为激活,这是另一个错误。

    您应该将最后一个密集层更改为:

    model.add(tf.keras.layers.Dense(3, activation = tf.nn.softmax))
    

    【讨论】:

    • 谢谢! “softmax”和 tf.nn.softmax 有区别吗?
    • 并非如此,它们提供相同的输出,如果您愿意,可以使用 'softmax'。
    【解决方案2】:

    您的数据与您的模型架构不匹配

    Incompatible shapes: [5,3] vs. [5,4]
    

    要调试这些类型的错误,请尝试将run_eagerly=False 参数添加到您的model.compile 函数;错误变得更具可读性。

    https://www.tensorflow.org/api_docs/python/tf/keras/Model#compile

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-14
      • 1970-01-01
      • 1970-01-01
      • 2021-03-24
      • 2017-07-13
      • 2016-10-06
      • 2022-01-16
      • 2020-02-28
      相关资源
      最近更新 更多