您好我正在更新以下功能:
def train(self, features, targets):
我的想法是让我的在线课程的todo我试过这个:
# TODO: Output error - Replace this value with your calculations.
error = y - final_outputs # Output layer error is the difference between desired target and actual output.
# TODO: Backpropagated error terms - Replace these values with your calculations.
output_error_term = error * final_outputs * (1 - final_outputs)
# TODO: Calculate the hidden layer's contribution to the error
hidden_error = np.dot(output_error_term, self.weights_hidden_to_output)
# TODO: Backpropagated error terms - Replace these values with your calculations.
hidden_error_term = hidden_error * hidden_outputs * (1 - hidden_outputs)
然而我得到了:
..FFE
======================================================================
ERROR: test_train (__main__.TestMethods)
----------------------------------------------------------------------
Traceback (most recent call last):
File "<ipython-input-11-90579d706c92>", line 41, in test_train
network.train(inputs, targets)
File "<ipython-input-9-596e703ab9b6>", line 65, in train
hidden_error = np.dot(output_error_term, self.weights_hidden_to_output)
ValueError: shapes (1,) and (2,1) not aligned: 1 (dim 0) != 2 (dim 0)
======================================================================
FAIL: test_data_path (__main__.TestMethods)
----------------------------------------------------------------------
Traceback (most recent call last):
File "<ipython-input-11-90579d706c92>", line 20, in test_data_path
self.assertTrue(data_path.lower() == 'bike-sharing-dataset/hour.csv')
AssertionError: False is not true
======================================================================
FAIL: test_run (__main__.TestMethods)
----------------------------------------------------------------------
Traceback (most recent call last):
File "<ipython-input-11-90579d706c92>", line 56, in test_run
self.assertTrue(np.allclose(network.run(inputs), 0.09998924))
AssertionError: False is not true
----------------------------------------------------------------------
Ran 5 tests in 0.005s
FAILED (failures=2, errors=1)
这是完整的代码,我下载了ipython的笔记本来显示我的完整代码:
https://gist.github.com/anonymous/e7a816ef0526d41fbdb63a0aa6c27712
非常感谢支持克服这个问题,非常感谢您的支持。
这是数据: https://gist.github.com/anonymous/31340c38a3fd8e175bf0054c7c005d2b
非常感谢你的支持。
答案 0 :(得分:1)
有关
hidden_error = np.dot(output_error_term, self.weights_hidden_to_output)
记住点积需要第一个操作数的列数与第二个操作数的行数相匹配。你有 (1,1)X(2,1) 因此第二个操作数的行数应为1,这意味着您需要:
(1,1)X(1,2)
这意味着您需要转置第二个操作数,请尝试:
hidden_error = np.dot(output_error_term, self.weights_hidden_to_output.T)
但我认为在修复此错误后,由于形状不一致,您会发现类似的错误。操纵您的操作数以匹配第一个列,第二个列中的行。