Объединить несколько выходов в tenorflowjs - PullRequest
1 голос
/ 11 марта 2020

Мне дали модель колледж, и я хочу использовать ее для создания тепловой карты. Для этого мне нужно получить результат последнего сверточного слоя. Поэтому я попытался создать новую модель, используя определения старой. Я видел, что это возможно в python и кажется, что это возможно в соответствии с документами.

Мой код выглядит примерно так:

const combined_output_model = (cam_model) => {
    const conv_layer = cam_model.layers.length - 3
    const input_layer = cam_model.input
    const output_layer = cam_model.layers[conv_layer].output
    return model = tf.model(
        inputs=input_layer,
        outputs=output_layer
    )

Однако, когда я запускаю В коде я получаю следующую ошибку:

container.ts:156 Uncaught (in promise) TypeError: Cannot read property 'sourceLayer' of undefined
    at e [as constructor] (container.ts:156)
    at new e (training.ts:483)
    at Object.t.model (exports.ts:74)
    at predictor (prediction.js:28)

при просмотре обоих input_layer и output_layer в локальных переменных видно, что у них обоих есть sourceLayers

Любая помощь приветствуется.

Привет

Ответы [ 2 ]

1 голос
/ 11 марта 2020

Вы используете python -подобное предложение для создания модели в js. В js tf.model принимает объект

return model = tf.model(
        {inputs: input_layer,
        outputs: output_layer}
    )

Подобный ответ можно найти здесь

0 голосов
/ 11 марта 2020

для создания новой модели слоев, которая является подмножеством исходной модели (т. Е. cam_model), вы можете попробовать что-то вроде этого:

const model = tf.sequential()
for (let i = 0; i < cam_model.layers.length - 3; i++) {
    model.add(cam_model.layers[i])
}

пожалуйста, обратите внимание, если вы используете этот подход, но хотите чтобы пропустить / пропустить первый / входной слой, вам нужно определить новый входной слой: https://js.tensorflow.org/api/latest/#layers .inputLayer

...