как я могу изменить массив numpy? Я получаю сообщение об ошибке не удается преобразовать массив размером 87880 в форму (130,20,26,1)

#python #numpy #numpy-ndarray

#python #numpy #numpy-ndarray

Вопрос:

Мой код выглядит следующим образом:

     idxs = [np.where(np.argmax(y_test, axis=1) == i)[0][0]
        for i in range(nb_classes)]
if targeted:
    if viz_enabled:
  # Initialize our array for grid visualization
        

        adv_inputs = np.array(
                    [[instance] * nb_classes for instance in x_test[idxs]],
                    dtype=np.float32)
    else:
        adv_inputs = np.array(
                        [[instance] * nb_classes for
                        instance in x_test[:source_samples]], dtype=np.float32)

    one_hot = np.zeros((nb_classes, nb_classes))
    one_hot[np.arange(nb_classes), np.arange(nb_classes)] = 1

    adv_inputs = adv_inputs.reshape(
        (source_samples * nb_classes, img_rows, img_cols, nchannels))
    adv_ys = np.array([one_hot] * source_samples,
                  dtype=np.float32).reshape((source_samples *
                                             nb_classes, nb_classes
  

Я хочу изменить adv_inputs. форма x_test равна (5982, 20, 26, 1), а форма y_test равна (5982, 13)

Комментарии:

1. какая строка выдает ошибку? элементы 87880 действительно не могут быть преобразованы в (130,20,26,1), поскольку 87880 / (130 * 20) = 33,8, что не является int. Как вы получили 87880 элементов из (5982,20,26,1)?

2. Я пытаюсь реализовать состязательную CW-атаку cleverhans. Поэтому он выдает мне ошибку в следующей строке:adv_inputs = adv_inputs.reshape( (source_samples * nb_classes, img_rows, img_cols, nchannels)) Итак, насколько я понимаю, он генерирует состязательный ввод.