1. 데이터셋 훈련이 끝났다
2024.10.16 - [AI] - [AI] 레시피 추천 모델 만들기 6 - RecBole 에 Datasets 훈련시키기
2. 추론 코드를 작성해야 한다 - run_inference.py
🐧 참고 문서 1 : https://hoon-bari.github.io/RS/Recbole
🐧 참고 문서 2 : https://mingchin.tistory.com/420
3. 코드 컴파일 사소한 오류 해결
🍁 오류 1 : IndexError |
Traceback (most recent call last): File "C:\Users\alsrud\Downloads\Babal-Server\Babal-Server\RecBole\RecBole-GNN\run_inference.py", line 40, in <module> rating_pred[matrix[batch_user_index].toarray() > 0] = 0 IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed |
⛅ 오류 발생 원인 : RecBole 추천 시스템 추론 과정에서는 사용하고자 하는 모델의 full_sort_predict 함수를 이용한다. 나의 경우 RecBole/recbole/model/general_recommender/ngcf.py 여기서는 view(-1) : 1차원 배열을 반환하고 있는데, 나는 user_id, item_id 2차원 배열을 반환하려고 해서 인덱스 오류가 발생한 것이다 |
💡 오류 해결 방법 : 2차원 배열을 전달할 수 있도록 user_id, item_id 를 담은 interaction 객체 생성 |
🍁 오류 2 : RuntimeError |
Traceback (most recent call last): File "C:\Users\alsrud\Downloads\Babal-Server\Babal-Server\RecBole\RecBole-GNN\run_inference.py", line 17, in <module> config, model, dataset, train_data, valid_data, test_data = load_data_and_model(args.model_path) File "c:\users\alsrud\downloads\babal-server\babal-server\recbole\recbole\quick_start\quick_start.py", line 263, in load_data_and_model model.load_state_dict(checkpoint["state_dict"]) File "C:\Users\alsrud\Downloads\Babal-Server\Babal-Server\venv\lib\site-packages\torch\nn\modules\module.py", line 2215, in load_state_dict raise RuntimeError('Error(s) in loading state_dict for {}:\n\t{}'.format( RuntimeError: Error(s) in loading state_dict for NGCF: Missing key(s) in state_dict: "GNNlayers.0.linear.weight", "GNNlayers.0.linear.bias", "GNNlayers.0.interActTr ansform.weight", "GNNlayers.0.interActTransform.bias", "GNNlayers.1.linear.weight", "GNNlayers.1.linear.bias", "GNNla yers.1.interActTransform.weight", "GNNlayers.1.interActTransform.bias", "GNNlayers.2.linear.weight", "GNNlayers.2.linear.bias", "GNNlayers.2.interActTransform.weight", "GNNlayers.2.interActTransform.bias". Unexpected key(s) in state_dict: "GNNlayers.0.lin1.weight", "GNNlayers.0.lin1.bias", "GNNlayers.0.lin2.weight ", "GNNlayers.0.lin2.bias", "GNNlayers.1.lin1.weight", "GNNlayers.1.lin1.bias", "GNNlayers.1.lin2.weight", "GNNlayers .1.lin2.bias", "GNNlayers.2.lin1.weight", "GNNlayers.2.lin1.bias", "GNNlayers.2.lin2.weight", "GNNlayers.2.lin2.bias". |
⛅ 오류 발생 원인 : RecBole 이 업데이트 되면서 변수명이 바뀐 것 같다 (ex. GNNlayers.0.lin1.weight → GNNlayers.0.linear.weight) |
💡 오류 해결 방법 : state_dict 함수가 실행되는 파일에서 변수명을 수정해주는 코드를 추가했다 (module.py) venv/Lib/site-packages/torch/nn/modules/module.py |
4. 추론 코드 완성하기
📜 완성 코드 : 2024.10.29 - [AI] - [AI] 레시피 추천 모델 만들기 8 - Inference (2) user 기반, item 기반 추천 받기
1. user based | 🌿 input : user_id - 특정 user_id 가 좋아하는 item_id 를 기반으로 다른 사용자들의 item 을 추천해준다 |
2. item based | 🌿 input : item_id - 특정 item_id 에 대한 평가를 한 user_id 리스트를 기반으로 다른 item 을 추천해준다 |
성공 ^.^
'AI' 카테고리의 다른 글
[AI] 레시피 추천 모델 만들기 11 - 배포 준비하기 (2) | 2024.11.05 |
---|---|
[AI/Git] 레시피 추천 모델 만들기 10 - clone 한 레포 git push 부터 대용량 파일 push 까지 (4) | 2024.11.04 |
[AI] 레시피 추천 모델 만들기 8 - Inference (2) user 기반, item 기반 추천 받기 (3) | 2024.10.30 |
[AI] 레시피 추천 모델 만들기 7 - Inference (1) 계획 수정.. (또획 또정) (5) | 2024.10.29 |
[AI] 레시피 추천 모델 만들기 6 - RecBole 에 Datasets 훈련시키기 (2) | 2024.10.16 |