선생님 #3. 정책 개선 #policy_stable <- true policy_stable = True old_pi = pi #각 s에 대해: for s in range(num_states): # pi_s <- argmax_a(sum(p(s',r|s,a)*[r + gamma*V(s')])) new_action_values = np.zeros(num_actions) for a in range(num_actions): for prob, s_, r, _ in transitions[s][a]: new_action_values[a] += prob * (r + GAMMA * V[s_]) new_action = np.argmax(new_action_values) pi[s] = np.eye(num_actions)[new_action] if old_pi.all() != pi.all(): policy_stable = False 여기 최적 정책을 업데이트 하는 과정을 디버깅 하는 과정에서 old.pi = pi 에서 메모리를 공유 해서 pi[s]를 업데이트를 같이 해서 무조건 아래서 if old_pi.all() != pi.all(): 구문은 True가 나오게 되어 있는데 의도한 바는 old_pi = copy.deepcopy(pi) 로 코드를 바꾸는게 맞나요?
이렇게 기존의 V 테이블을 가지고 새로운 V` 을 구하는데 while True: #delta <- 0 delta = 0 #각 s에 대해 반복: for s in range(num_states): #v <- V(s) old_value = V[s] new_value = 0 #업데이트 규칙 : V(s) = sum(pi(a|s)*sum(p(s,a)*[r + gamma*v(s')])) for a, prob_action in enumerate(policy[s]): # s', r에 대해 합산 for prob, s_, reward, _ in transitions[s][a]: new_value += prob_action * prob * (reward + GAMMA * V[s_]) V[s] = new_value #delta <- max(delta|v - V(s)|) delta = max(delta, np.abs(old_value - V[s])) V[s] = new_value 여기 실습 코드에서는 바로 V[s]을 업데이트 합니다. 예를 들면 9번 타일 상태 값에서 오른쪽 action을 해서 10번의 다음 상태 값을 가지고 계산 합니다. 그리고 9번이 상태 값이 업데이트 됩니다. 그리고 나서 10번에서 왼쪽의 action의 상태 값을 구할때 이미 업데이트된 9번의 상태 값을 가지고 상태를 업데이트 합니다. 기존 ppt 에서 설명은 기존의 V를 가지고 있다가 기존의 V를 업데이트 하지 않은 채로 새로운 V` 테이블을 계산 하고 V 을 V` 로 교체 하는것으로 표현 되고 있습니다. https://cs.stanford.edu/people/karpathy/reinforcejs/gridworld_dp.html 해당 사이트의 코드는 ppt 에서 배운 대로 V를 V` 로 교체 하는것으로 되어 있습니다. 실습 처럼 바로 값을 업데이트 하는게 맞는건지 ppt 처럼 스왑 하는게 맞는건지 어느것이 맞는건지 잘모르겠습니다.
안녕하세요 랜덤 고양이 좋아요 기능 구현하는 부분을 듣고 있는데요. 모바일 웹을 flutter로 구현해보고자 듣고 있는데 좋아요 기능을 사진을 누르면 되어야하는데 반응이 없더라고요. 클릭했을 경우 print() 문이 있어서 console에는 잘 나오는데요. 사진에 하트 표시가 새로고침이 되지 않아요.. 혹시 이거 구현하려면 모바일 웹에서는 다르게 코드를 작성해야할까요? 오픈 카카오톡 으로 문의주시면 더 빠르게 답변 받으실 수 있어요 :)
안녕하세요, 강사님! 강의 잘 듣고 있습니다. def recur(idx, A, B, C, D, E): global answer, result, tmp if idx == N: if a <= A and b <= B and c <= C and d <= D: # 모든 영양소를 충족했다면 if answer > E: answer = min(answer, E) result = tmp[:] return return # 재료를 사용한 경우 tmp.append(idx+1) recur(idx+1, A+ingre[idx][0], B+ingre[idx][1], C+ingre[idx][2], D+ingre[idx][3], E+ingre[idx][4]) # 재료를 사용하지 않는 경우 tmp.pop() recur(idx+1, A, B, C, D, E) N = int(input()) a, b, c, d = map(int, input().split()) ingre = [list(map(int, input().split())) for _ in range(N)] answer = 999999999999999999999 tmp = [] result = [] recur(0, 0, 0, 0, 0, 0) if answer == 999999999999999999999: print(-1) print() else: print(answer) print(*result) 강의에서 작성해주신 기본 코드 기반으로 완성해보았는데, 계속해서 99%에서 틀렸습니다라고 뜹니다..! 알고리즘 로직상 이상이 없어보이는데, 제가 놓쳐서 고쳐야할 부분 알려주심 감사하겠습니다..!
[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
제가 겪은 문제는, 웹페이지 데이터 가져오는 명령어가 비쥬얼 스튜디오에서 작동을 안했다는 겁니다. 빙홈페이지 등의 웹페이지 주소를 배웠던 명령어에 기입하면,invaild 모모 등 코드 문법 오류만이 떠요.제가 쳤던 명령어는 다음과 같습니다. res = reqest.get(웹주소) [Q 뭐가 문제일까요?] 비쥬얼 스튜디오 문제일까요? 제 노트북이 많이 느려서 쥬피터 노트북은 쓰지 않았습니다. 혹은 특정 웹 주소 등의 데이터는 못가져 올까요?
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
안녕하세요. 이전에 무료 강의를 잘 보고 이번에 유료강의도 신청하게되었습니다. 다름이 아니라 에뮬레이터 세팅하는 강좌에서 막히는 부분이 있어서 문의 드립니다. 제가 안드로이드를 처음 설치한건 22년도 였고, 플러터는 23년에 처음 접하게 되어서 유투브의 무료강의를 보며 배우고 있었는데 그 당시에는 에뮬도 잘 돌아갔고 문제없이 핫리로드도 잘 되었습니다. 그러나 유투브 강의의 버전과 제가 설치한 버전의 차이로 불편함이 많아지는 와중에 코드팩토리님을 알게되어 이렇게 찾아뵙게 되었습니다. 이번 기회에 안드로이드와 플러터도 업데이트를 했는데.. 에뮬이 뭔가 이상합니다. 사진을 첨부해보겠습니다. 혹시라도 부족한 부분이 있으면 언제든지 말씀해주세요. 보완해서 사진이나 기타 등등 올리겠습니다. 첫번째사진. 이게 왜 계속 뜨는지 모르겠습니다. C:\Users\hy_co\AppData\Local\Android\Sdk 경로로 가서 에뮬을 지우고 다시 깔아봤는데도 좀비처럼 계속 나타납니다...ㅜ 두번째 사진. 핫리로드도 잘되고 괜찮은거 같은데 숫자 카운팅되는 프로그램이 100% 작동되지 않습니다... @ 번외로 드리는 질문 입니다. @ 1. 코드팩토리 디스코드는 운영시간이 있으신가요? 원격조종도 운영시간이 있으신가요? 제가 평일에는 낮에는 일을하고 집에 오면 육아 후에 공부를 할 수 있어서 오후 9시30분 이후에나 컴퓨터를 할 수 있습니다..ㅜ 주말에는 언제나 시간이 가능합니다. 스택오버플로우나 구글링으로 해결해보려 했으나 제가 실력이 부족한 탓에 해결하지 못하였습니다 ㅜ 부디 도와주시면 감사하겠습니다.
pycharm을 사용해서 print("Red Apple\rPine") 을 입력했더니 PineApple이 출력되는 게 아니라 Pine만 출력됩니다 구글에 검색해보니 \r 뒤의 문자만 출력해주는 탈출문자라는데 아무튼 똑같이 입력했는데도 불구하고 제 컴퓨터에서는 왜 강의 예제와 달리 Pine만 출력되나요?
안녕하세요 4:03에 super()명령어로 Class car{ string model; string year; 실행하고 난 뒤에 this.batteryCapacity = batteryCapacity는 75라는 거고 그 다음 줄에 ElectricCar~kwh 이 부분은 왜 출력하지 않고 넘어 가나요??
5:06 에서 int sum = 0; ~ switch(sum/30) { ~ 일 때 sum 이 int로 선언되었기 때문에 sum/30 이 8.xxx 가 되고, 버림돼서 8이 된다고 하셨는데, sum/30 이 몫의 나눗셈을 뜻하는 거니까 '8' 이고, int이니까 정수형 8이 역시 맞구나! 하고 넘어가는 논리로 생각하면 틀린 생각일까요?
[리뉴얼] 처음하는 파이썬 데이터 분석 (쉽게! 전처리, pandas, 시각화 전과정 익히기) [데이터분석/과학 Part1]
안녕하세요 강의를 잘 듣고 있는데 pandas groupby질문이 있어서 문의드립니다. 강의 내용에서는 groupby을 할 경우 이후에 sum이나 mean이 올 경우 숫자 데이터는 sum이나 mean이 수행이 되고 텍스트 데이터는 사라진다고 강의에 말씀하였는데 저같은 경우는 sum의 경우 텍스트가 단순히 합쳐지고 mean같은 경우는 아래 캡쳐 화면과 같이 에러가 발생합니다. 하지만 아래 캡쳐 화면과 같이 sum이나 mean할 항목을 명시해 주면 원하는 수행을 하게 되는데요 이럴 경우에는 앞으로는 mean이나 sum을 할 항목을 명시해주면 될까요??(파이썬 버전은 jupyter를 설치해서 3.12.4 입니다)
xgboost의 모델은 decision tree의 형식을 따르는 걸까요? n_estimators값 만큼의 반복 수행을 하며 decision tree의 가중치를 수정해나가는 방식으로 이해하였는데 맞는지 궁금합니다. 그리고 xgb가 왜 앙상블 기법인지에 대해서도 약간 이해가 잘 안되서 설명 부탁드립니다!
5:35초 부근 sum += n[i] 일때 왜 한번에 n 값을 다 더해주나요? n=1일때 스위치문 타고 n이 2일때 스위치문 타는 걸로 보면 안되는 이유가 궁금합니다 그리고 6:08 초에도 int가 3일때 케이스문 타는건 이해했는데요 그럼 k 값은 아무 필요가 없는걸까요?