Загрузить обученную модель в другой процесс с помощью tflearn

Я пытаюсь сохранить модель и загрузить ее в другой процесс с библиотекой tflearn...

Итак, я сгенерировал модель:

lenx = 21908
leny = 81
# Build neural network
net = tflearn.input_data(shape=[None, lenx])
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net, leny, activation='softmax')
net = tflearn.regression(net)

# Define model and setup tensorboard
model = tflearn.DNN(net, tensorboard_dir='tflearn_logs')
# Start training (apply gradient descent algorithm)
model.fit(train_x, train_y, n_epoch=10, batch_size=8, show_metric=True)
model.save('model.tflearn')

Это работает хорошо! Затем в другом файле, чтобы запустить в другом процессе, я пытаюсь загрузить его следующим образом:

lenx = 21908
leny = 81
# Build neural network
net = tflearn.input_data(shape=[None, lenx])
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net, 8)
net = tflearn.fully_connected(net, leny, activation='softmax')
net = tflearn.regression(net)

model = tflearn.DNN(net, tensorboard_dir='tflearn_logs')

model.load("model.tflearn")

Но я получил эту ошибку:

ValueError: Cannot feed value of shape (1, 0) for Tensor 'InputData/X:0', which has shape '(?, 21908)'

Я перепробовал много вещей, но это не работает.

2 ответа

Архитектура нейронной сети, которую вы будете загружать, должна быть такой же. Кроме того, вам не нужно определять последний слой, потому что не будет обучения. Не используйте строкуnet = tflearn.regression(net)

Я думаю, что вам не хватает аргумента weights_only=True в загрузке:

model.load("model.tflearn", weights_only=True)
Другие вопросы по тегам