Python ValueError:没有为任何变量提供梯度-tensorflow==2.3.1

Python ValueError:没有为任何变量提供梯度-tensorflow==2.3.1,python,tensorflow,machine-learning,gradient,valueerror,Python,Tensorflow,Machine Learning,Gradient,Valueerror,我刚刚开始使用Tensorflow,我需要建立一个神经网络来对菜肴进行分类。我一开始只有3个classess,但由于预期之后会增加,我正在从生成器创建一个tf.data.Dataset,以便我可以释放计算机中的一些RAM 问题在于,我尝试使用的模型似乎没有从我的数据集中获取任何可训练的变量(既不是有效的梯度),导致以下错误: ValueError: No gradients provided for any variable: ['conv2d_9/kernel:0', 'conv2d_9/bi

我刚刚开始使用Tensorflow,我需要建立一个神经网络来对菜肴进行分类。我一开始只有3个classess,但由于预期之后会增加,我正在从生成器创建一个tf.data.Dataset,以便我可以释放计算机中的一些RAM

问题在于,我尝试使用的模型似乎没有从我的数据集中获取任何可训练的变量(既不是有效的梯度),导致以下错误:

ValueError: No gradients provided for any variable: ['conv2d_9/kernel:0', 'conv2d_9/bias:0', 'conv2d_10/kernel:0', 'conv2d_10/bias:0', 'conv2d_11/kernel:0', 'conv2d_11/bias:0', 'dense_6/kernel:0', 'dense_6/bias:0', 'dense_7/kernel:0', 'dense_7/bias:0'].
我在下面向您展示我的代码:

def dataset(label,clases,path="../input/images"):
    def genImg():
        for im in glob.glob(f"{path}/{label}/*.jpg"):
            img = cv2.imread(im)
            img2 = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
            dim=(32,32)
            image=cv2.resize(img2, dim,interpolation=cv2.INTER_AREA)
            clase=clases[label]
            yield np.array(clase).astype('int32'),np.array(image).astype('float32')/255
    return genImg



apple_pies=tf.data.Dataset.from_generator(dataset(clases=clases,label='apple_pie'),(tf.float32),[2,32,32,3])

baby_ribs=tf.data.Dataset.from_generator(dataset(clases=clases,label='baby_back_ribs'),(tf.float32),[2,32,32,3])

baklavas=tf.data.Dataset.from_generator(dataset(clases=clases,label='baklava'),(tf.float32),[2,32,32,3])

foods=apple_pies.concatenate(baby_ribs)
foods=foods.concatenate(baklavas)

X_test= foods.take(600) 
X_train= foods.skip(600)

steps=3
n_features=1
batch=256
n_clases=3
epocas=1
input_shape=(2,32,32,3)

modelo=Sequential()
    
modelo.add(Conv2D(32, kernel_size=(3, 3), activation='relu',
                  kernel_initializer='he_normal', input_shape=input_shape[1:]))

modelo.add(MaxPooling2D((2,2)))
modelo.add(Dropout(0.25))
modelo.add(Conv2D(64, (3, 3), activation='relu'))
modelo.add(MaxPooling2D((2,2)))
modelo.add(Dropout(0.25))
modelo.add(Conv2D(128, (3, 3), activation='relu'))
modelo.add(Dropout(0.4))
modelo.add(Flatten())
modelo.add(Dense(128,  activation='relu'))
modelo.add(Dropout(0.3))
modelo.add(Dense(n_clases, activation='softmax'))

modelo.compile(loss='categorical_crossentropy', 
               optimizer='adam', 
               metrics=['accuracy'])

modelo.summary()


earlystopping = EarlyStopping(
    monitor = 'loss', 
    verbose = 1, 
    patience = 20
)

history=modelo.fit(X_train,callbacks = [earlystopping], batch_size=batch, epochs=epocas, verbose=0)
谢谢大家