Python ValueError:没有为任何变量提供梯度-tensorflow==2.3.1
我刚刚开始使用Tensorflow,我需要建立一个神经网络来对菜肴进行分类。我一开始只有3个classess,但由于预期之后会增加,我正在从生成器创建一个tf.data.Dataset,以便我可以释放计算机中的一些RAM 问题在于,我尝试使用的模型似乎没有从我的数据集中获取任何可训练的变量(既不是有效的梯度),导致以下错误: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
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)
谢谢大家强>