керас, в чем смысл модели (данных)

1
class MNISTModel:
    def __init__(self, restore, session=None):
        self.num_channels = 1
        self.image_size = 28
        self.num_labels = 10

        model = Sequential()

        model.add(Conv2D(32, (3, 3),
                         input_shape=(28, 28, 1)))
        model.add(Activation('relu'))
        model.add(Conv2D(32, (3, 3)))
        model.add(Activation('relu'))
        model.add(MaxPooling2D(pool_size=(2, 2)))

        model.add(Conv2D(64, (3, 3)))
        model.add(Activation('relu'))
        model.add(Conv2D(64, (3, 3)))
        model.add(Activation('relu'))
        model.add(MaxPooling2D(pool_size=(2, 2)))

        model.add(Flatten())
        model.add(Dense(200))
        model.add(Activation('relu'))
        model.add(Dense(200))
        model.add(Activation('relu'))
        model.add(Dense(10))
        model.load_weights(restore)

        self.model = model
        print('selfMNIST')

    def predict(self, data):
        tmp=self.model(data)  #Question is here
        return tmp

Что это за предложение "tmp = self.model(data)" for? "model" здесь - это переменная класса Classial, я никогда не вижу такого использования. Этот код взят из ## Copyright (C) 2016, Nicholas Carlini

Теги:
keras
model

1 ответ

0
Лучший ответ

Хороший вопрос, это зависит от того, какие data, но, конечно, фрагмент кода вводит в заблуждение. Чтобы уточнить:

  • Если вы вызываете модель напрямую, вам нужно передать тензоры, она действует как другой слой. Например, model(anotherlayer). Но если вы передадите фактические данные, такие как ошибка NumPy, это даст следующую ошибку:

    ValueError: Layer sequential_1 вызывается с входом, который не является символическим тензором. Полученный тип:. Полный ввод: [массив (...)]. Все входы слоя должны быть тензорами.

  • Если вы хотите предсказать, как в пропуске некоторых числовых данных и запускать сеть/распространять значения/вывести результат, вам нужно model.predict(data) поэтому он вводит в заблуждение, поскольку это функция прогнозирования.

Я предполагаю, что автору необходимо объединить модели вместе и отредактировать функцию predict класса вместо создания другой функции класса.

  • 0
    Спасибо! Он должен действовать как еще один слой, потому что он пропускает тензоры. Я не понимаю "другой слой". Комментарий, когда автор вызывает определенную функцию «предикат»: «# прогнозирование ДО-SOFTMAX модели» (в l2_attack.py). Кстати, класс MNISTModel определяется в «setup_mnist.py». Полный код находится на github " github.com/carlini/nn_robust_attacks ".
  • 0
    Можете ли вы дать мне какой-нибудь документ об использовании модели (данных)?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню