Почему get_update Адама выполняется только один раз? - PullRequest
0 голосов
/ 12 апреля 2019

Почему get_update () не выполняется каждую эпоху?

myAdam:

    @interfaces.legacy_get_updates_support
    def get_updates(self, loss, params):
        print("update!")
        #Other code is the same

и это компиляция и подгонка

model.compile(optimizer=Adam(lr=2e-5),loss='binary_crossentropy',metrics=['acc'])
his = model.fit_generator(train_genertor,steps_per_epoch=100,epochs=2,validation_data=val_genertor,validation_steps=50)

из

update
Epoch 1/2
Epoch 2/2

Почему не

update
Epoch 1/2
update
Epoch 2/2

1 Ответ

1 голос
/ 12 апреля 2019

Одна важная деталь, которую забывают люди, - то, что вычислительная модель TensorFlow немного отличается от обычной вычислительной модели. В TensorFlow вы строите график операций, а затем оцениваете его с помощью сеанса, чтобы предоставить набор фактических входных данных для получения выходных данных.

Это отличается от обычного кода, где вы будете вызывать функции снова и снова.

В случае get_updates любого оптимизатора идея состоит в том, что get_updates создает операции, которые запускают один шаг оптимизатора, а затем оптимизатор итеративно оценивается с использованием сеанса, поэтому get_updates запускается только один раз. построить вычислительный граф.

...