This is the task that I am performing using this model
这是我的模型
def create_convolution_layers(input_img):
# 1st Convolutional Layer
model = Conv2D(filters=96,input_shape=image_shape, kernel_size=(11,11),strides=(4,4),padding='valid')(input_img)
# model = ReLU()(model)
#Max Pooling
model= MaxPooling2D(pool_size=(3,3),strides=(2,2),padding='same')(model)
#Add Dropout to prevent overfitting
model=(Dropout(0.4))(model)
#2nd Convolutional Layer
model=Conv2D(filters=384,kernel_size=(5,5), strides=(2,2),padding='same')(model)
# model = ReLU()(model)
#Max Pooling
model=(MaxPooling2D(pool_size=(3,3),strides=(2,2),padding='same'))(model)
#Add Dropout to prevent overfitting
model=(Dropout(0.4))(model)
#3rd Convolutional layer
model=Conv2D(filters=384,kernel_size=(3,3),strides=(1,1),padding='same')(model)
# model = ReLU()(model)
#4th Convolutional layer
model=Conv2D(filters=384,kernel_size=(3,3),strides=(1,1),padding='same')(model)
# model = ReLU()(model)
#5th Convolutional Layer
model=Conv2D(filters=256,kernel_size=(3,3),strides=(1,1),padding='same')(model)
# model = ReLU()(model)
#Max Pooling
model=MaxPooling2D(pool_size=(3,3),strides=(2,2),padding='same')(model)
#Passing it to fully connected layer , Here we do flatten
model=Flatten()(model)
#6th-Fully connected layer has 4096 neurons
model=Dense(4096,input_shape=(96*96*3,))(model)
# model = ReLU()(model)
return model
两个模型的串联
image_shape=(96,96,3)
first_input=Input(shape=image_shape)
first_patch=create_convolution_layers(first_input)
second_input=Input(shape=image_shape)
second_patch=create_convolution_layers(second_input)
final=concatenate([first_patch,second_patch])
#7th-fully connected layer
z=Dense(4096,input_shape=(4096*2,))(final)
#8th-fully connected layer
z=Dense(4096,input_shape=(4096,))(z)
#Output
z=Dense(8,activation='softmax')(z)
model=Model(inputs=[first_input,second_input],outputs=[z])
model.compile(loss='categorical_crossentropy',optimizer=optimizers.Adam(),metrics=['accracy'])
best_weights_file="weights.best.hdf5"
checkpoint = ModelCheckpoint(best_weights_file, monitor='val_acc', verbose=1, save_best_only=True, mode='max')
callbacks = [checkpoint]
Input= 一个 3d 数组。 “anchor_4d”和“relative_4d”中的每个数组都是维度(96,96,3=Patch Dimension)
model.fit((anchor_4d,relative_4d),epochs=20,callbacks=callbacks,verbose=1,shuffle=True)
这是我尝试拟合模型时遇到的错误
值错误:在用户代码中:
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:805 train_function *
return step_function(self, iterator)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:795 step_function **
outputs = model.distribute_strategy.run(run_step, args=(data,))
/usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:1259 run
return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:2730 call_for_each_replica
return self._call_for_each_replica(fn, args, kwargs)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:3417 _call_for_each_replica
return fn(*args, **kwargs)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:788 run_step **
outputs = model.train_step(data)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:757 train_step
self.optimizer.minimize(loss, self.trainable_variables, tape=tape)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/optimizer_v2/optimizer_v2.py:498 minimize
return self.apply_gradients(grads_and_vars, name=name)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/optimizer_v2/optimizer_v2.py:598 apply_gradients
grads_and_vars = optimizer_utils.filter_empty_gradients(grads_and_vars)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/optimizer_v2/utils.py:79 filter_empty_gradients
([v.name for _, v in grads_and_vars],))
ValueError: No gradients provided for any variable: ['conv2d/kernel:0', 'conv2d/bias:0', 'conv2d_5/kernel:0', 'conv2d_5/bias:0', 'conv2d_1/kernel:0', 'conv2d_1/bias:0', 'conv2d_6/kernel:0', 'conv2d_6/bias:0', 'conv2d_2/kernel:0', 'conv2d_2/bias:0', 'conv2d_7/kernel:0', 'conv2d_7/bias:0', 'conv2d_3/kernel:0', 'conv2d_3/bias:0', 'conv2d_8/kernel:0', 'conv2d_8/bias:0', 'conv2d_4/kernel:0', 'conv2d_4/bias:0', 'conv2d_9/kernel:0', 'conv2d_9/bias:0', 'dense/kernel:0', 'dense/bias:0', 'dense_1/kernel:0', 'dense_1/bias:0', 'dense_2/kernel:0', 'dense_2/bias:0', 'dense_3/kernel:0', 'dense_3/bias:0', 'dense_4/kernel:0', 'dense_4/bias:0'].
这个错误是因为我没有提供标签-->(y),因为我正在尝试使用无监督方法训练模型,在这种情况下可以做些什么来解决这个错误。