Проблема с Tensorflow. js модель с несколькими выходами LSTM. Почему он говорит, что это не связано? - PullRequest
0 голосов
/ 05 апреля 2020

У меня возникла небольшая проблема при попытке сделать модель LSTM с тензорным потоком. js, но я все время сталкиваюсь с этой ошибкой:

Uncaught (in promise) Error: Layer lstmLayer is not connected, no input to return.

Я не уверен, как это происходит , Я пытался изменить код несколькими способами, но это всегда приводит к этой ошибке. Я просто не могу понять, в чем проблема, она работала просто отлично перед добавлением слоя LSTM. Я не лучший с javascript версией Tensorflow, поэтому любые указатели очень помогут. Я просто пытаюсь заставить его работать, чтобы я мог продолжать изменять его, чтобы лучше делать то, что я хочу в конце.

createModel() {
    return tf.tidy(() => {
        const inputLayer = tf.input({
            shape: [this.memoryLength, this.inputNodes],
            name: "inputLayer"
        });

        const lstmLayer = tf.layers.lstm({
            units: 8,
            returnSequences: true,
            name: "lstmLayer"
        }).apply(inputLayer);

        const hiddenLayer1 = tf.layers.dense({
            units: this.hiddenNodes1,
            activation: 'sigmoid',
            name: "hiddenLayer1"
        }).apply(lstmLayer);

        const dropout1 = tf.layers.dropout({
            rate: 0.2,
            name: "dropout1"
        }).apply(hiddenLayer1);

        const flattenLayer = tf.layers.flatten({
            name: "flattenLayer"
        }).apply(dropout1);

        const hiddenLayer2 = tf.layers.dense({
            units: this.hiddenNodes2,
            activation: 'sigmoid',
            name: "hiddenLayer2"
        }).apply(flattenLayer);

        const dropout2 = tf.layers.dropout({
            rate: 0.2,
            name: "dropout2"
        }).apply(hiddenLayer2);

        const hiddenLayer3 = tf.layers.dense({
            units: this.hiddenNodes3,
            activation: 'sigmoid',
            name: "hiddenLayer3"
        }).apply(flattenLayer);

        const dropout3 = tf.layers.dropout({
            rate: 0.2,
            name: "dropout3"
        }).apply(hiddenLayer3);

        const outputLayer1 = tf.layers.dense({
            units: this.inputNodes,
            activation: 'softmax',
            name: "outputLayer1"
        }).apply(dropout2);

        const outputLayer2 = tf.layers.dense({
            units: this.outputNodes,
            activation: 'softmax',
            name: "outputLayer2"
        }).apply(dropout3);

        const model = tf.model({
            inputs: [inputLayer],
            outputs: [outputLayer1, outputLayer2],
            name: "model"
        });

        model.summary();

        return model;
    });
}
...