Как использовать обучаемую партию модель для прогнозирования на одном входе - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть модель RNN, которая обучалась на наборе данных:

train = tf.data.Dataset.from_tensor_slices((data_x[:train_size],
                          data_y[:train_size])).batch(batch_size).repeat()

модель:

    model = tf.keras.Sequential()
    model.add(tf.keras.layers.GRU(units=lstm_num_units,
                                   return_sequences=True,
                                   kernel_initializer='random_uniform',
                                   recurrent_initializer='random_uniform',
                                   bias_initializer='random_uniform',
                                   batch_size=batch_size,
                                   input_shape = [seq_len, num_features]))
    model.add(tf.keras.layers.LSTM(units=lstm_num_units,
                                   batch_size=batch_size,
                                   return_sequences=True,
                                   input_shape = [seq_len, num_features]))
    model.add(tf.keras.layers.Flatten())
    model.add(tf.keras.layers.Dense(units=dence_units))
    model.add(tf.keras.layers.Dropout(drop_flat))
    model.add(tf.keras.layers.Dense(units=out_units))
    model.add(tf.keras.layers.Softmax())   

    model.compile(loss="sparse_categorical_crossentropy",
            optimizer=tf.train.RMSPropOptimizer(opt),
            metrics=['accuracy'])

 model.fit(train, epochs=EPOCHS,
                        steps_per_epoch=repeat_size_train,
                        validation_data=validate,
                        validation_steps=repeat_size_validate,
                        verbose=1,
                        shuffle=True)
                        callbacks=[tensorboard, cp_callback])

Мне нужно сделать прогноз на одном входе seq_len, но выглядит как мой вводдолжен иметь размер пакета:

ar = np.random.randint(98, size=[batch_size, seq_len])
ar = np.reshape(ar, [batch_size, seq_len, 1])
prediction = model.m.predict(ar)

Есть ли способ заставить его работать на одном входе формы [1, seq_len, 1]?

1 Ответ

0 голосов
/ 10 февраля 2019

Да, просто перестройте модель без размера партии в первом слое.

Скопируйте веса старой модели.

newModel.set_weights(oldModel.get_weights())

Назначение размера партии существует только вstateful=True модели для обеспечения согласованности между партиями.

Несмотря на то, что нет никаких математических изменений из-за размера партии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...