Информация об изменениях

Сообщение Re: серия тупых вопросов от 19.09.2018 13:15

Изменено 19.09.2018 13:42 SomeOne_TT

Re: серия тупых вопросов
Здравствуйте, The Passenger, Вы писали:

...
TP> # The [0] is to disable the training phase flag
TP> return _convout1_f([0] + [X])

...
TP>насколько я понял K.learning_phase возвращает тензоры для сети ... что дает сложение со входами модели ? и как это вообще работает?

TP>дальнейший код для меня вообще по нулям — кто что и зачем ... не ну както понятно что K.function какимто образом связывает вход с выходом опроеделенного слоя,

TP>но что такое _convout1_f([0] + [X]) для меня вообще непонятно.

Это скорее всего broadcasting. Когда складываются два массива/тензора разной длины, то обычно правый растягивается под левый. Но как конкретно это происходит впитоне — хз, может меньший растягивается под больший. Тогда результатом будет тензор X, к которому добавили столбик нулей слева.

Соответственно все, что выше, уже можно попытаться понять.

https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html


Это просто лист, первый элемент которого — 0, а второй — массив X

(1) def layer_to_visualize(layer):
(2)   inputs = [K.learning_phase()] + model.inputs

(3)   _convout1_f = K.function(inputs, [layer.output])
(4)   def convout1_f(X):
        # The [0] is to disable the training phase flag
(5)      return _convout1_f([0] + [X])

(6)  convolutions = convout1_f(img_to_visualize)



(1) передается слой, выходы которого интересуют.
(2) создается массив входных данных, в который затем будут заливать данные в п.5. А может, нас интересует только его shape
(3) получаем указатель на функцию, которая сгенерит выход сети , у которой входным параметром является тензор входных данных, а также
указатель на выход нужного слоя.
(4)(5) — вызываем эту самую функцию, которая а) загрузит данные изображения куда-то (возможно, в inputs), а потом прогонит сеть до тех пор, пока
в layer.output не появятся новые данные. Затем она что-то вернет. Возможно, веса output.
Re: серия тупых вопросов
Здравствуйте, The Passenger, Вы писали:

...
TP> # The [0] is to disable the training phase flag
TP> return _convout1_f([0] + [X])

...
TP>насколько я понял K.learning_phase возвращает тензоры для сети ... что дает сложение со входами модели ? и как это вообще работает?

TP>дальнейший код для меня вообще по нулям — кто что и зачем ... не ну както понятно что K.function какимто образом связывает вход с выходом опроеделенного слоя,

TP>но что такое _convout1_f([0] + [X]) для меня вообще непонятно.

Это скорее всего broadcasting. Когда складываются два массива/тензора разной длины, то обычно правый растягивается под левый. Но как конкретно это происходит впитоне — хз, может меньший растягивается под больший. Тогда результатом будет тензор X, к которому добавили столбик нулей слева.

Соответственно все, что выше, уже можно попытаться понять.

https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html


Это просто лист, первый элемент которого — 0, а второй — массив X

(1) def layer_to_visualize(layer):
(2)   inputs = [K.learning_phase()] + model.inputs

(3)   _convout1_f = K.function(inputs, [layer.output])
(4)   def convout1_f(X):
        # The [0] is to disable the training phase flag
(5)      return _convout1_f([0] + [X])

(6)  convolutions = convout1_f(img_to_visualize)



(1) передается слой, выходы которого интересуют.
(2) создается массив входных данных, в который затем будут заливать данные в п.5. А может, нас интересует только его shape
(3) получаем указатель на функцию, которая сгенерит выход сети , у которой входным параметром является тензор входных данных, а также
указатель на выход нужного слоя.
(4)(5) — вызываем эту самую функцию, которая а) загрузит данные изображения куда-то (возможно, в inputs), а потом прогонит сеть до тех пор, пока
в layer.output не появятся новые данные. Затем она что-то вернет. Возможно, веса layer.output.