오늘 추천하려고 하는 책은 혁펜하임의 이다. 딥러닝을 공부하다 보면 Loss 함수의 중요성을 깨닫는 순간이 온다. 특히, MSE(Mean Squared Error)와 BCE(Binary Cross-Entropy)의 차이는 무엇인지, 그리고 지금 내가 풀고자 하는 문제에서는 어떤 Loss 함수를 사용해야 하는지가 궁금할 때가 있다. 그래서 오늘은 딥러닝의 Loss 함수들을 MLE (Maximum Likelihood Estimation)의 관점에서 풀어낸 내용을 중심으로 리뷰를 하려고 한다. 이 책의 4장에서는 MLE(Maximum Likelihood Estimation)를 기반으로 Loss 함수를 설명하며, 딥러닝 학습 과정이 확률적 추정 과정과 밀접한 관련이 있음을 보여준다. MLE와 딥러닝의 ..
1. 공백없는 문자열 입력받아 출력하기공백이 들어 있지 않은 문자열의 경우에는, input()함수를 이용하면 쉽게 입력을 받을 수 있음given_input = input()print(given_input)# 입력>> hello# 출력hello 문자열은 마치 1차원 배열과 같음첫 번째 문자를 참조하기 위해서는 0번지를, 두 번째 문자를 참조하기 위해서는 1번지를 참조해야 함given_input = "banana"print(given_input[0]) # b 문자열의 경우에는 for loop 없이 print 함수만을 이용하여 문자열을 출력할 수 있음given_input = "banana"print(given_input)>> banana 하지만 일반 리스트의 경우 리스트를 그대로 출력하면 리스트 type..
1. n * n 크기의 0으로 초기화된 2차원 배열 만들기1. list comprehension 이용n = 4arr_2d = [ [0 for _ in range(n)] for _ in range(n)]print(arr_2d)>> 출력 결과[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] n * m 크기의 격자라면 다음과 같이 초기화가 가능함list comprehension 사용시 n, m 위치에 유의해야 함n, m = 4, 5arr_2d = [ [0 for _ in range(m)] for _ in range(n)]print(arr_2d)>> 출력 결과[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, ..
1. 2차원 배열 입력n개의 줄에 걸쳐 각 n개의 숫자를 공백을 사이에 두고 입력받는 코드 작성하는 방법n = 4for _ in range(n): arr = list(map(int, input().split())) sum_val = sum(arr) print(sum_val)입력1 2 3 47 8 9 1011 12 13 1415 16 17 18출력10345066 위의 코드는 행 단위로 합을 구하는 코드이지만, 만약 열 단위로 합을 구해야 한다면 2차원 격자를 그대로 담아야 할 필요가 있음. 이를 위해서는, 2차원 배열에 대한 정의가 필요함. 의미상 2차원 배열은, 다음과 같이 각 행을 리스트라 생각했을 때 이를 각 원소로 갖는 리스트라 생각할 수 있음[[1, 2, 3, 4], [7..
최댓값은 max_val 이라는 변수를 사용하여 다음과 같이 구해볼 수 있음. 지금까지 구한 최댓값인 max_val이라는 값보다 현재 값인 elem이 더 큰 경우라면, 최댓값을 갱신한다는 개념arr = [1, 5, 2, 5, 3, 9]max_val = 0for elem in arr: if elem > max_val: max_val = elemprint(max_val)>> 9 하지만 만약 주어진 모든 원소들이 전부 음수라면, 예상과는 다르게 최댓값이 0으로 구해지게 됨. 이 문제에 대한 해결책은 크게 2가지가 있음 1. -sys.maxsize 이용주어지는 숫자들 값보다 더 작은 숫자를 초기값으로 설정하는 것이 경우 python에서는 -sys.maxsize를 이용해 초기값을 정해주는 것이 ..
1. 특정 문자가 입력될 때까지 여러 줄 입력 받기import sysinput_string = ""for line in sys.stdin: input_string += line # 콤마가 입력될 때까지 여러 줄 입력받기 if '.' in line: break# 결과 출력print(input_string) 2. 특정 문자"만" 입력될 때까지 여러 줄 입력 받기import syssentences = []for line in sys.stdin: # 개행 문자 제거 line = line.strip() # '.'만 입력되면 종료 if line == '.': break # 문장 끝에 '.'가 있다면, '.'을 제외하고 리스트에 추가 if l..