안녕하세요 바로빌 개발자센터입니다. 저희는 표준전자인증기관 바로빌의 API 서비스를 제공합니다. 해당 서비스 잠재고객인 개발자 여러분들의 다양한 의견을 수렴하기 위해 아래와 같이 설문을 진행하고자 합니다. 설문 진행을 통해 귀중한 여러분의 의견을 서비스 제작에 반영할 예정이오니 많은 관심과 참여 부탁드립니다! 소요시간 : 약 1-3분 이내 설문 링크 : https://forms.gle/eKL4FxWdnJaaajfC8 사이트 참고 : 바로빌 개발자센터 | 비즈니스 데이터 API 연동, 전자세금계산서 구축 (barobill.co.kr) 기프티콘은 총 20분께 11월 4일 전달 예정입니다. 개인정보는 해당 설문 기간이 지나면 안전하게 파기됩니다! 소중한 시간 내 주셔서 다시 한 번 감사의 말씀 드리며, 오늘도 좋은하루 보내세요. 감사합니다.
일급함수 - 기본 특징(1-2) 예제 중, print(list(map(var_func, range(1,11)))) 이런 예제가 있는데요 print([map(var_func, range(1,11))]) 이렇게 list로 만들어 출력하려고 하면 map object at 0x~~~ 이런 식으로 나오게 됩니다. 해당 구문은 왜 list변환이 안되는 건가요?
map = "4x4" SLIPPERY = False # 결정론적 환경 #SLIPPERY = True # 확률적 환경 # FrozenLake-v1 환경을 생성합니다. # desc: None이면 기본 맵을 사용합니다. # map_name: 사용할 맵의 이름을 지정합니다. # is_slippery: True이면 미끄러운 표면(확률적 환경)을 사용하고, False이면 결정론적 환경을 사용합니다. env = gym.make('FrozenLake-v1', desc=None, map_name=map, is_slippery = SLIPPERY) GAMMA = 0.9 THETA = 1e-7 num_states = env.observation_space.n num_actions = env.action_space.n transitions = env.P # 1. 모든 s에 대해 V(s) = 0과 임의의 pi(s)를 초기화 V = np.zeros(num_states) pi = np.ones([num_states, num_actions]) * 0.25 policy_stable = False # 정책이 안정적인지 여부를 나타내는 변수 while not policy_stable: #2. 정책 평가 while True: # delta 초기화 : delta <- 0 delta = 0 #각 s에 대해 반복 for s in range(num_states): # 업데이트 규칙: V(s) = sum(pi(a|s)*sum(p(s,a)*[r + gamma*v(s')])) for a, prob_a in enumerate(pi[s]): # s', r에 대해 합산 (각 행동 a에 대한 상태 전이 확률을 반영한 보상 합산) old_value = V[s] new_value = 0 for prob, s_, r, _ in transitions[s][a]: new_value += prob_a * prob * (r + GAMMA * V[s_]) V[s] = new_value # delta 갱신: delta <-- max(delta|v - V(s)|) delta = max(delta, np.abs(old_value - V[s])) # delta가 THETA보다 작으면 정책 평가 종료 if delta < THETA: break #3. 정책 개선 #policy_stable <- true old_pi = copy.deepcopy(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): # 각 행동 a에 대해 상태 전이 확률과 보상을 반영한 가치 합산 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 np.array_equal(old_pi, pi): policy_stable = True else: policy_stable = False # 이전 정책과 새로운 정책이 동일한지 확인하여 정책 안정성 판단 위의 과정의 정책 평가와 정책 개선 과정을 반복하다보면, 정책과 가치함수가 수렴하게 됩니다. 이 때 3번 정책 개선 과정을 잘 이해한 것인지 궁금합니다. 1. 초기 정책은 0,1,2,3번 행동에 대해 모두 0.25 확률이 부여되어 있었습니다. 2. 단 한번의 정책 개선이 발생해도, 특정 행동의 확률만 1이 되고 나머지가 0이 됩니다. 3. 정책 평가와 정책 개선이 반복되더라도, 특정 행동의 확률이 1이고 나머지 행동이 0인 것은 모든 STATE에서 동일합니다. 다만 확률이 1이되는 행동이 바뀔 뿐입니다. 4. 이전 정책과 현재 정책이 모두 일치하면, 정책 개선은 종료됩니다. 즉, STOCHASTIC한 정책이 단 한 번의 정책 개선으로 DETERMINISTIC하게 변화하고, 이를 정책 평가와 정책 개선의 반복으로 특정한 가치함수와, 정책으로 수렴하게 된다, 라고 이해한 것이 옳은 것인가요?
강의를 듣다 궁금한게 생겼습니다. 보통 API 개발을 할 때, 컨트롤러단 부터 완성이 되고 나머지 서비스나 영속성 계층 로직이 완성 되는것 같은데 테스트 코드 순서를 어떻게 가져가시나요 ? 강의에서는 영속성 -> 서비스 -> 컨트롤러 순으로 테스트가 진행 되는데 이 순서대로 하시나요 ?
n <=1이므로 1을 반환받았는데, memo[n]=result가 왜 dict형태로 {2:2} 형태로 저장되는지를 모르겠습니다. 어떤 강좌에서 질문하셨는지 알 수 있습니다. 영상에서 몇 분 몇 초 대를 알려주셔야 제가 한 번에 질문 내용 확인이 가능합니다. 이미 다른 누군가가 질문을 한 이력 이 있을 수 있습니다. 질문 게시판을 한 번 확인 부탁드립니다. 학교의 과제나 타 강사의 코드 등 외부 수업 자료에 대해서는 답변하지 않습니다. 제가 다루는 커리큘럼 외의 이론이나, 너무 디테일한 컴퓨터 이론에 대해서는 답변 드리지 않습니다. 시험에 안 나오는 경우가 많고, 나와 봤자 1문제 나오는데 외워야 할 부분이 많은 것 등 (예시: 서브넷 마스크 계산) 질문을 올릴 때 이 글은 모두 지우고 내용을 입력해주세요.
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 D에서 세번째 'ab cd ' 마지막에 공백이 있음에도 공백제거를 하지않아도 True 판단되고있어서 강의 내용과 다릅니다. 제가 작업한 것에 문제가 있는 것인지 확인부탁드려요.
질문은 동영상 강의에 들어가서 오른쪽에 커뮤니티 버튼을 통해 해주세요. 그래야 어떤 강좌에서 질문하셨는지 알 수 있습니다. 영상에서 몇 분 몇 초 대를 알려주셔야 제가 한 번에 질문 내용 확인이 가능합니다. 이미 다른 누군가가 질문을 한 이력 이 있을 수 있습니다. 질문 게시판을 한 번 확인 부탁드립니다. 학교의 과제나 타 강사의 코드 등 외부 수업 자료에 대해서는 답변하지 않습니다. 제가 다루는 커리큘럼 외의 이론이나, 너무 디테일한 컴퓨터 이론에 대해서는 답변 드리지 않습니다. 시험에 안 나오는 경우가 많고, 나와 봤자 1문제 나오는데 외워야 할 부분이 많은 것 등 (예시: 서브넷 마스크 계산) 질문을 올릴 때 이 글은 모두 지우고 내용을 입력해주세요.
왜 static 을 붙여뒀는지 알수있을까요? NetworkMessage클래스를 Network클래스 안에서만 쓰려고 private 을 붙여뒀는데 왜 static 을 붙여둔건가요? public class Network { public void sendMessage(String text) { NetworkMessage networkMessage = new NetworkMessage(text); networkMessage.print(); } private static class NetworkMessage { private String content; public NetworkMessage(String content) { this.content = content; } public void print() { System.out.println(content); } } }
처음 서버 run 하고 google, naver, keycloak 전부 처음에는 아이디, 비밀번호를 입력하는 사용자입력이 필수적인데, 한번 로그인하고 나서는 웹어플리케이션 서버를 종료하고 다시 시작해도 구글, 네이버, keycloak 계정으로 로그인하는 과정이 필요없이 바로 인증이 됩니다. 왜이런건가요? 로그아웃했으면 당연히 다시 로그인하는 과정이 필요한데 이러면 잘못된거 아닌가요?