NotImplementedError: Невозможно преобразовать символьный c Тензор (up_sampling2d_5_target_1: 0) в массив numpy - PullRequest
0 голосов
/ 10 февраля 2020
import keras.backend as K
from keras.optimizers import Adam
from keras.losses import binary_crossentropy

## intersection over union
def IoU(y_true, y_pred, eps=1e-6):
    print(type(y_true))
    print(y_true)
    if np.max(y_true) == 0.0:
        return IoU(1-y_true, 1-y_pred) ## empty image; calc IoU of zeros
    intersection = K.sum(y_true * y_pred, axis=[1,2,3])
    union = K.sum(y_true, axis=[1,2,3]) + K.sum(y_pred, axis=[1,2,3]) - intersection
    return -K.mean( (intersection + eps) / (union + eps), axis=0)  




def fit():
        seg_model.compile(optimizer=Adam(1e-3, decay=1e-6), loss=IoU, metrics=['binary_accuracy'])

    step_count = min(MAX_TRAIN_STEPS, train_df.shape[0]//BATCH_SIZE)
    aug_gen = create_aug_gen(make_image_gen(train_df))
    loss_history = [seg_model.fit_generator(aug_gen,
                                 steps_per_epoch=step_count,
                                 epochs=MAX_TRAIN_EPOCHS,
                                 validation_data=(valid_x, valid_y),
                                 callbacks=callbacks_list,
                                workers=1 # the generator is not very thread safe
                                           )]
    return loss_history

while True:
    loss_history = fit()
    if np.min([mh.history['val_loss'] for mh in loss_history]) < -0.2:
        break

Я получил эту ошибку из этого кода

----------------------------------------- ---------------------------------- NotImplementedError Traceback (последний последний вызов) в 14 15, в то время как True: - -> 16 loss_history = fit () 17, если np.min ([mh.history ['val_loss'] для mh в loss_history]) <-0.2: 18 break </p>

в fit () 1 def fit () : ----> 2 seg_model.compile (оптимизатор = Адам (1e-3, распад = 1e-6), потеря = IoU, метрики = ['binary_accuracy']) 3 4 step_count = min (MAX_TRAIN_STEPS, train_df.shape [ 0] // BATCH_SIZE) 5 aug_gen = create_aug_gen (make_image_gen (train_df)) *

~ / venv / lib / python3 .7 / site-packages / keras / backend /ensorflow_backend.py в symbolic_fn_wrapper (* args , ** kwargs) 73, если _SYMBOLIC_SCOPE.value: 74 с get_graph (). as_default (): ---> 75 вернуть удовольствие c (* аргументы, ** kwargs) 76 иначе: 77 вернуть удовольствие c (* args, ** kwargs)

~ / venv / lib / python3 .7 / site-packages / keras / engine / training.py в компиляции (self, оптимизатор, потери, метрики, loss_weights, sample_weight_mode, weighted_metrics, target_tensors, ** kwargs) 227 # loss_weight_2 * output_2_loss_fn (...) + 228 # потерь слоя. -> 229 self.total_loss = self._prepare_total_loss (маски) 230 231 # Функции для обучения, тестирования и прогнозирования:

~ / venv / lib / python3 .7 / site-packages / keras / engine /training.py в _prepare_total_loss (self, mask) 690 691 output_loss = loss_fn (-> 692 y_true, y_pred, sample_weight = sample_weight) 693 694 если len (self.outputs)> 1:

~ / venv /lib/python3.7/site-packages/keras/losses.py в call (self, y_true, y_pred, sample_weight) 69 scope_name = 'lambda', если self.name == '' else self.name 70 с K.name_scope (scope_name): ---> 71 loss = self.call (y_true, y_pred) 72 return lost_utils.compute_weighted_loss (73 потери, sample_weight, сокращение = self.reduction)

~ / venv / lib / python3 .7 / site-packages / keras / loss.py в вызове (self, y_true, y_pred) 130 Значения потерь на выборку. 131 "" "-> 132 вернуть self.fn (y_true, y_pred, ** self._fn_kwargs) 133 134 def get_config (self):

в IoU (y_true, y_pred, eps) 5 ## пересечение over union 6 def IoU (y_true, y_pred, eps = 1e-6): ----> 7, если np.max (y_true) == 0.0: 8 возвращает IoU (1-y_true, 1-y_pred) ## пустое изображение ; cal c IoU пересечения нулей 9 = K.sum (y_true * y_pred, axis = [1,2,3])

<<strong> array_function внутренняя структура> в amax (* args , ** kwargs)

~ / venv / lib / python3 .7 / site-packages / numpy / core / fromnumeri c .py в amax (a, axis, out, keepdims, initial, где) 2619 "" "2620
return _wrapreduction (a, np.maximum, 'max', ось, None, out, -> 2621 keepdims = keepdims, начальный = начальный, где = где) 2622 2623

~ / venv / lib / python3 .7 / site-packages / numpy / core / fromnumeri c .py в _wrapreduction (obj, ufun c, метод, ось, dtype, out, ** kwargs) 88 уменьшение возврата (ось = ось, out = out, ** passkwargs) 89 ---> 90 return ufun c .reduce (obj, axis, dtype, out, ** passkwargs) 91 92

~ / venv / lib / python3 .7 / site-packages / tenorflow_core / python / framework / ops.py в массиве (self) 734 def массиве (self ): 735 повысить NotImplementedError («Невозможно преобразовать символ c Тензор ({}) в numpy» -> 736 «массив.». format (self.name)) 737 738 def len (self):

NotImplementedError: Невозможно преобразовать символ c Tensor (up_sampling2d_5_target_1: 0) в массив numpy.

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