机器学习和TensorFlow项目中的"Graph Execution Error"



我是一名学生,不知道我在这里做错了什么。我不知道为什么我得到这个错误。关于代码的任何问题或规格,我很乐意回答以澄清任何事情。如果有人有什么见解,我将不胜感激。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from tensorflow.keras.preprocessing.image import ImageDataGenerator
train_idg= ImageDataGenerator(rescale = 1/255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip = False,
vertical_flip = True,
)
train_data = train_idg.flow_from_directory('rps_train',
target_size=(64,64))
#,class_mode='binary')
#Found 2520 images belonging to 3 classes.
test_idg = ImageDataGenerator(1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip = False,
vertical_flip = True,
)
test_data=test_idg.flow_from_directory('rps_test',
target_size=(64,64))
#,class_mode='binary')
from tensorflow.keras.models import Sequential
from tensorflow.keras import layers
model = Sequential()

model.add(layers.Conv2D(filters=64,
kernel_size=3,
input_shape=[64,64,3],
activation='relu'))
model.add(layers.MaxPool2D(strides=3))
model.add(layers.Conv2D(filters=32,
kernel_size=3,
activation='relu'))
model.add(layers.MaxPool2D(strides=3))
model.add(layers.Flatten())
model.add(layers.Dense(units=64, activation='relu'))
model.add(layers.Dense(units=64, activation='softmax'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'] )
model.fit(x=train_data, validation_data=test_data, epochs=10,batch_size=50)
And the error appears here.
Epoch 1/10
---------------------------------------------------------------------------
InvalidArgumentError                      Traceback (most recent call last)
Input In [29], in <cell line: 1>()
----> 1 model.fit(x=train_data, validation_data=test_data, epochs=10,batch_size=50)
File ~anaconda3libsite-packageskerasutilstraceback_utils.py:70, in 
filter_traceback.<locals>.error_handler(*args, **kwargs)
67     filtered_tb = _process_traceback_frames(e.__traceback__)
68     # To get the full stack trace, call:
69     # `tf.debugging.disable_traceback_filtering()`
---> 70     raise e.with_traceback(filtered_tb) from None
71 finally:
72     del filtered_tb
File ~anaconda3libsite-packagestensorflowpythoneagerexecute.py:54, in 
quick_execute(op_name, num_outputs, inputs, attrs, ctx, name)
52 try:
53   ctx.ensure_initialized()
---> 54   tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
55                                       inputs, attrs, num_outputs)
56 except core._NotOkStatusException as e:
57   if name is not None:
InvalidArgumentError: Graph execution error:
Detected at node 'gradient_tape/binary_crossentropy/logistic_loss/mul/BroadcastGradientArgs' defined at (most recent call last):

错误代码继续使用目录名等....我真的不知道该怎么做,或者我做错了什么,我的教授不是很有帮助,所以我很感激任何帮助。

这里有两个问题。根据评论,你的数据是:

#Found 2520 images belonging to 3 classes.

因为有3个类,你应该在最后一层使用3个单元(而不是64个):

model.add(layers.Dense(units=3, activation='softmax'))

此外,损失应该是"sparse_categorical_crossentropy""binary_crossentropy"只有当你有0/1标签时才能使用。

最新更新