Сообщение Re: серия тупых вопросов от 19.09.2018 13:15
Изменено 19.09.2018 13:40 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
...
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]) для меня вообще непонятно.
Соответственно все, что выше, уже можно попытаться понять.
https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html
Это просто лист, первый элемент которого — 0, а второй — массив X
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) передается слой, выходы которого интересуют.
(2) создается массив входных данных, в который затем будут заливать данные в п.5. А может, нас интересует только его shape
(3) получаем указатель на функцию, которая сгенерит выход сети , у которой входным параметром является тензор входных данных, а также
указатель на выход нужного слоя.
(4)(5) — вызываем эту самую функцию, которая а) загрузит данные изображения куда-то (возможно, в inputs), а потом прогонит сеть до тех пор, пока
в layer.output не появятся новые данные. Затем она что-то вернет. Возможно, веса output.
...
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]) для меня вообще непонятно.
Соответственно все, что выше, уже можно попытаться понять.
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.