def test_hopfield_network_get_updated_state(self): node_number = 2 weight_mat = np.ones(( node_number, node_number)) threshold_vec = np.array([[1, 1]]) init_state = np.array([[1, 1]]) energy = HopfieldNetwork.get_energy_value(weight_mat, threshold_vec,init_state ) assert energy == 0
def test_hopfield_network_get_energy_value(self): node_number = 2 weight_mat = np.ones(( node_number, node_number)) init_state = np.array([[1, 1]]) updated_state = HopfieldNetwork.get_updated_state(weight_mat, init_state) assert updated_state.tolist()[0][0] == 1 assert updated_state.tolist()[0][1] == 1
def test_hopfield_network_predict(self): node_number = 4 threshold = 0 hn = HopfieldNetwork(node_number, threshold) train_data = [[1, 1, 1, -1], [-1, -1, 1, 1]] hn.train(train_data) # アソシアトロン assert hn.get_updated_state(hn.weight_mat , np.array([[1, 1, 1, -1]])).tolist() == [[1, 1, 1, -1]] assert hn.get_updated_state(hn.weight_mat , np.array([[-1, -1, 1, 1]])).tolist() == [[-1, -1, 1, 1]] assert hn.get_updated_state(hn.weight_mat , np.array([[1, 1, -1, -1]])).tolist() == [[1, 1, 1, -1]] # hopfield assert hn.predict([1, 1, 1, -1]) == [[1, 1, 1, -1]] assert hn.predict([-1, -1, 1, 1]) == [[-1, -1, 1, 1]] assert hn.predict([1, 1, -1, -1]) == [[1, 1, 1, -1]]
def test_hopfield_network_train(self): node_number = 2 threshold = 0 hn = HopfieldNetwork(node_number, threshold) train_data = [[1, 1]] hn.train(train_data) assert hn.weight_mat.tolist() == [[0, 1], [1, 0]] hn = HopfieldNetwork(node_number, threshold) train_data = [[1, -1]] hn.train(train_data) assert hn.weight_mat.tolist() == [[0, -1], [-1, 0]] hn = HopfieldNetwork(node_number, threshold) train_data = [[-1, 1]] hn.train(train_data) assert hn.weight_mat.tolist() == [[0, -1], [-1, 0]] hn = HopfieldNetwork(node_number, threshold) train_data = [[-1, -1]] hn.train(train_data) assert hn.weight_mat.tolist() == [[0, 1], [1, 0]]