LSTMのトレーニングとテストの長さが違います

13458 ワード

最近問題があり、LSTMのトレーニングのサンプルの時間長は一致していますが、テストの時にジェネレータを使ってその長さが不定であることを望み(生成されたLatent spaceの長さによって異なる)、特に良い方法はないようです(トレーニングの時にtimestepに変更するのはNone)を探しましたが、私は今トレーニングしています.
後でモデルを変えてみればいいのですが、
{
    "class_name": "Model",
    "config": {
        "name": "model_1",
        "layers": [{
            "name": "input_1",
            "class_name": "InputLayer",
            "config": {
                "batch_input_shape": [null, 100, 5],
                "dtype": "float32",
                "sparse": false,
                "name": "input_1"
            },
            "inbound_nodes": []
        }, {
            "name": "generator",
            "class_name": "Sequential",
            "config": [{
                "class_name": "LSTM",
                "config": {
                    "name": "lstm_1",
                    "trainable": true,
                    "batch_input_shape": [null, 100, 5],
                    "dtype": "float32",
                    "return_sequences": true,
                    "return_state": false,
                    "go_backwards": false,
                    "stateful": false,
                    "unroll": false,
                    "units": 100,
                    "activation": "tanh",
                    "recurrent_activation": "sigmoid",
                    "use_bias": true,
                    "kernel_initializer": { "class_name": "VarianceScaling", "config": { "scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null } },
                    "recurrent_initializer": { "class_name": "Orthogonal", "config": { "gain": 1.0, "seed": null } },
                    "bias_initializer": { "class_name": "Zeros", "config": {} },
                    "unit_forget_bias": true,
                    "kernel_regularizer": null,
                    "recurrent_regularizer": null,
                    "bias_regularizer": null,
                    "activity_regularizer": null,
                    "kernel_constraint": null,
                    "recurrent_constraint": null,
                    "bias_constraint": null,
                    "dropout": 0.0,
                    "recurrent_dropout": 0.0,
                    "implementation": 1 }
            }, {
                "class_name": "Reshape",
                "config": {
                    "name": "reshape_1",
                    "trainable": true,
                    "target_shape": [-1, 100] }
            }, {
                "class_name": "Dense",
                "config": {
                    "name": "dense_1",
                    "trainable": true,
                    "units": 1,
                    "activation": "tanh",
                    "use_bias": true,
                    "kernel_initializer": { "class_name": "VarianceScaling", "config": { "scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null } },
                    "bias_initializer": { "class_name": "Zeros", "config": {} },
                    "kernel_regularizer": null,
                    "bias_regularizer": null,
                    "activity_regularizer": null,
                    "kernel_constraint": null,
                    "bias_constraint": null }
            }],
            "inbound_nodes": [
                [
                    ["input_1", 0, 0, {}]
                ]
            ]
        }],
        "input_layers": [
            ["input_1", 0, 0]
        ],
        "output_layers": [
            ["generator", 1, 0]
        ]
    },
    "keras_version": "2.1.5",
    "backend": "tensorflow"
}
input_1の部分に注意してください.
“batch_input_shape”: [null, 100, 5]
の部分は私たちが修正する必要があります.この意味はNoneのサンプル数で、長さは100で、次元ごとに5の時間系列で、私たちがしなければならないのは100をnullにあげることです.
このように見ると、Kerasinput_1を直接修正してもいいかもしれません.