• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

베이지안 최적화 for문 질문

22.10.14 10:36 작성 조회수 208

0

선생님 안녕하세요!

hyperopt에서 질문이 생겨서 글 남깁니다.

 

# results에서 loss 키값에 해당하는 밸류들을 추출하여 list로 생성.

losses = [loss_dict['loss'] for loss_dict in trial_val.results]

 

이 문장인데요.

 

loss_dict라는 객체를 만든건가요?

제가 알기론 for와 in 사이가 반환값으로 알고 있습니다. 그럼 반환 값이 loss_dict인데 loss_dict을 for 앞에다 바로 선언을 해준건가요?

trial_val.results에서 loss 값을 가져오려고 저 코드를 쓴 것으로 압니다. 그런데 loss_dict['loss']를 하면 바로 trial_val.results의 los값에 접근할 수 있는건가요?

잘 이해가 되지 않습니다ㅠㅠ

답변 1

답변을 작성해보세요.

2

oort_cloud98님의 프로필

oort_cloud98

2022.10.14

[loss_dict['loss'] for loss_dict in trial_val.results]
for문을 사용한 리스트 생성을 간단하게 표현한 식입니답
loss_dict['loss']는 잠시 두고
for loss_dict in trial_val.results 을 사용해
trial_val.results의 값들을 loss_dict라는 이름의 변수로 하나씩 받아오는 것까진 이해하신 것 같습니다.

잠시 두었던 loss_dict['loss'] 구문은 뒤에 for문으로 받아온 loss_dict라는 딕셔너리 파일(이름에서 추측했습니다 아닐수도 있겠네요.)에 Key가 'loss'인 항목을 리스트에 추가한다 라고 보시면 될 것 같습니다.

예를들어
trial_val.results => { {loss: 1}, {loss: 2}, {loss: 3} } 이라고 저장된 리스트라고 가정할 때
for문을 통해 하나씩 loss_dict라는 이름으로 읽어옵니다
1번째 루프 : loss_dict => {loss:1}
2번째 루프: loss_dict => {loss:2}
...


루프마다 받아온 loss_dict에서 loss라는 키의 값을 losses 라는 리스트에 저장하게 됩니다.
1번째 루프 : losses => {1}
2번째 루프 : losses => {1, 2}
...

해당 구문을 풀어 적는다면 이런 형식이 될 것 같습니다.
losses = []
for loss_dic in trial_val.results:

losses.append(loss_dict['loss'])
제가 설명을 잘하지 못해 이해하는데 어려움이 있을 수도 있겠네욥..

uuhbae2님의 프로필

uuhbae2

질문자

2022.10.14

친절한 설명 감사합니다! 설명을 잘 해주셔서 이해되었습니다!

for문으로 {loss : 1}을 하나씩 가져오는 걸 생각하지 못했던 것 같습니다.

매번 들으면서 느끼는 거지만 좋은 재능 공유해주셔서, 어려운 공부 재밌게 하고 있습니다.

바쁘신 와중에 이런 양질의 강의를 해주셔서 다시 한 번 감사드립니다.

오, oort_cloud98 

좋은 답변 감사합니다.