Бернулли РБМ, расчет ошибки после каждой эпохи
В настоящее время я использую пакет scikit-learn для реализации сети RBM Бернулли, которая, кажется, работает до сих пор, но у меня есть одна проблема, я хотел бы рассчитать веса для скрытых узлов после каждой итерации, получить ошибку, и затем продолжайте, мой текущий код выглядит так:
def rbm():
logistic = linear_model.LogisticRegression(solver='lbfgs', max_iter=15000,
multi_class='multinomial')
rbm = BernoulliRBM(n_iter=40, learning_rate = 0.01, n_components = 100, random_state=0, verbose=True)
#ME =
rbm_features_classifier = Pipeline(
steps=[('rbm', rbm), ('logistic', logistic)])
rbm_features_classifier.fit(bindigit_trn, targetdigit_trn)
return rbm.components_
def plotting():
w = rbm()
w = w.reshape((100, 784))
ME = np.zeros((2000, ))
for j in range(1, 20):
pattern_for_testing = bindigit_tst[j - 1]
x_star = np.dot(w, pattern_for_testing.T)
result = np.dot(w.T, x_star)
error = np.sum(abs(bindigit_tst[j - 1] - result))
ME[j] = error*(1/bindigit_tst.shape[1])
result = result.reshape((28, 28))
plt.subplot(2, 10, j)
plt.axis('off')
plt.imshow(result, cmap = "gray")
print(ME)
plt.show()
Шаблоны, которые я использую, это набор данных MNIST (рукописные цифры). Как я уже упоминал выше, есть ли способ позволить встроенному пакету возвращать веса, хранящиеся в rbm.components_ в моем случае для каждой итерации, аккуратно? Я понимаю, что, вероятно, могу сделать это с помощью цикла for, но я даже не хочу думать о том, к какой временной сложности это приведет... Заранее спасибо