Керас (Tensorflow) Уровень UpSampling2D: индекс кортежа вне диапазона - PullRequest
0 голосов
/ 07 января 2019

У меня есть изображение и маска следующих размеров соответственно: TensorShape ([Размер (Нет), Размер (2), Размер (2), Размер (8)]) TensorShape ([Размер (Нет), Размер (2), Размер (2), Размер (1)])

Я пытаюсь передать маску в слой UpSampling2D без удачи. Я получаю следующую ошибку:

~/workspace/multirespconv/UNetModel.py in __init__(self, img_rows, img_cols, weight_filepath, vgg_weights, inference_only)
 40 
 41         # Create UNet-like model
---> 42         self.model = self.build_pconv_unet()
 43 
 44     def build_vgg(self, weights="imagenet"):

~/workspace/multirespconv/UNetModel.py in build_pconv_unet(self, train_bn, lr)
130             return conv, mask
131 
--> 132         d_conv9, d_mask9 = decoder_layer(e_conv8, e_mask8, e_conv7, e_mask7, 512, 3)
133         d_conv10, d_mask10 = decoder_layer(d_conv9, d_mask9, e_conv6, e_mask6, 512, 3)
134         d_conv11, d_mask11 = decoder_layer(d_conv10, d_mask10, e_conv5, e_mask5, 512, 3)

~/workspace/multirespconv/UNetModel.py in decoder_layer(img_in, mask_in, e_conv, e_mask, filters, kernel_size, bn)
121             print((img_in.shape, mask_in.shape))
122             up_img = UpSampling2D(size=(2,2))(img_in)
--> 123             up_mask = UpSampling2D(size=(2,2), data_format='channels_last')(mask_in)
124             concat_img = Concatenate(axis=3)([e_conv,up_img])
125             concat_mask = Concatenate(axis=3)([e_mask,up_mask])

~/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages/keras/engine/base_layer.py in __call__(self, inputs, **kwargs)
472             if all([s is not None
473                     for s in to_list(input_shape)]):
--> 474                 output_shape = self.compute_output_shape(input_shape)
475             else:
476                 if isinstance(input_shape, list):

~/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages/keras/layers/convolutional.py in compute_output_shape(self, input_shape)
1931         for dim in range(len(output_shape)):
1932             if output_shape[dim] is not None:
-> 1933                 output_shape[dim] *= size_all_dims[dim]
1934         return tuple(output_shape)
1935 

IndexError: tuple index out of range

Согласно документации Keras, (ссылка здесь: https://www.tensorflow.org/api_docs/python/tf/keras/layers/UpSampling2D) слой UpSampling должен иметь возможность принимать любой 4D-тензор.

В приведенной выше ошибке фигура img_in имеет вид TensorShape ([Размер (Нет), Размер (2), Размер (2), Размер (8)]), а форма mask_in - TensorShape ([Размер (Нет), Размер (2), Размер (2), Размер (1)]).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...