Я пытаюсь построить блок RCL в Keras для повторяющейся сети свертки, как описано в статье: https://www.cv -foundation.org / openaccess / content_cvpr_2015 / paper / Liang_Recurrent_Convolutional_Neural_2015_CVPR_paper.pdf
Моя модель, использующая мой пользовательский слой keras, компилируется, однако, после запуска 1 эпохи при сохранении модели, я сталкиваюсь с ошибкой, выданной h5py:
h5py / _objects.pyx в h5py._objects.with_phil.wrapper ()
h5py / _objects.pyx в h5py._objects.with_phil.wrapper ()
h5py / h5o.pyx в h5py.h5o.link ()
RuntimeError: Невозможно создать ссылку (имя уже существует)
Я использую уже существующие слои keras внутри моего пользовательского слоя:
class Recurrent_block(tf.keras.layers.Layer):
def __init__(self, ch_out,t):
self.num_outputs = num_outputs
self.t = t
self.ch_out = ch_out
super(Recurrent_block, self).__init__()
def build(self, input_shape)
self.shape = tf.TensorShape([input_shape[0].value,input_shape[1].value,input_shape[2].value,self.ch_out])
self.fc = tf.keras.models.Sequential([tf.keras.layers.Conv2D(filters=self.ch_out, kernel_size=(3,3), strides=(1, 1), padding='same'),tf.keras.layers.BatchNormalization(),tf.keras.layers.Activation('relu')])
self.fc.build(self.shape)
print(self.fc.trainable_weights)
self._trainable_weights = self.fc.trainable_weights
super(Recurrent_block, self).build(self.shape)
def call(self,x):
x = tf.keras.layers.Conv2D(self.ch_out,kernel_size=1,strides=(1, 1),padding='same')(x)
for i in range(self.t+1):
if i==0:
x1 = self.fc(x)
x1 = self.fc(x+x1)
return x1
Может кто-нибудь помочь, пожалуйста, либо для устранения этой ошибки, либопросто помогите мне объединить несколько слоев keras в один пользовательский слой, а также изменить функцию вызова, как я это сделал.