我正在做一个关于RBM限制Boltzmann机器的大学任务。但是这个代码错误。我很困惑如何使这段代码工作。有人可以帮我解决这个错误吗?
def reconstruct(self, v):
h = sigmoid(np.dot(v, self.W) + self.hbias)
reconstructed_v = sigmoid(np.dot(h, self.W.T) + self.vbias)
return reconstructed_v
def test_rbm(learning_rate=0.1, k=1, training_epochs=10):
data = datainput
rng = np.random.RandomState(123)
# construct RBM
rbm = RBM(input=data, n_visible=40, n_hidden=20, np_rng=rng)
# train
for epoch in range(training_epochs):
rbm.contrastive_divergence(lr=learning_rate, k=k)
cost = rbm.get_reconstruction_cross_entropy()
print ('Training epoch %d, cost is ' % epoch, cost, file = sys.stderr)
# test
v = datatarget
print (rbm.reconstruct(v))
if __name__ == "__main__":
test_rbm()
ValueError: shapes (1979,1) and (40,20) not aligned: 1 (dim 1) != 40 (dim 0)
在运行时打印(rbm.reconstruct(v))错误行在h = sigmoid(np.dot(v,self.W)+ self.hbias)