기초 노트 53

파이썬 - 얕은복사(shallow copy)와 깊은 복사(deep copy)

앞선 글에서 mutable한 객체를 반복하고자 할때는 얕은 복사가 이루어져 동일한 메모리 값을 참조하게 된다고 했다. 그렇다면 mutable객체의 반복은 얕은 복사로 동일한 객체를 참조하는게 아니라 서로 다른 별개의 객체로 만들어 값만 복사할 순 없을까? 얕은복사와 깊은복사를 예시를 통해 다시 정리해보자. 얕은 복사 (Shallow Copy): 이 방법은 최상위 컨테이너는 새로운 복사본을 만들지만, 컨테이너가 담고 있는 내부 객체들은 원본 객체의 참조를 그대로 유지한다. Python의 copy 모듈의 copy() 함수를 이용하여 얕은 복사를 수행할 수 있다. import copy original_list = [[1, 2, 3], [4, 5, 6]] shallow_copied_list = copy.copy..

파이썬 - 이중 리스트 초기화시 주의점

이중 리스트 같은 경우 간단히 리스트 컴프리헨션을 사용함으로써 초기화를 할 수 있다. array[1][1] = 3으로 할당하면 아래와 같이 두번째 row의 두번째 요솟값만 3으로 바뀐걸 알 수 있다. m = 3 n = 4 array = [[0]*m for _ in range(n)] array[1][1]=3 array >>> [[0, 0, 0], [0, 3, 0], [0, 0, 0], [0, 0, 0]] 그러나 만약 아래의 코드로 이중리스트를 초기화 한다고 하면 문제가 생긴다. array = [[0]*m]*n 으로 초기화 후 , array[1][1]=5를 할당하면 array= [[0]*m]*n array[1][1]=5 array >>> [[0, 5, 0], [0, 5, 0], [0, 5, 0], [0, 5..

파이토치 에러 핸들링 - 토치 쿠다 설정 관련 이슈 OSError: [WinError 193] %1은(는) 올바른 Win32 응용 프로그램이 아닙니다. Error loading "C:\ProgramData\Anaconda3\lib\site-packages\torch\lib\shm.dll" or one of its depend..

평소에는 주로 코랩을 사용 하였으나 점차 코랩 보다는 로컬 환경에 익숙해져야 할것같아서 윈도우 로컬에서 vscode및 주피터랩으로 python을 설치하고, 여러 필요한 라이브러리를 설치하고자 하였다. 파이토치도 마찬가지 대상이었다. 아나콘다를 사용하는 주피터 환경부터 세팅 해주려 했고, cuda 11.7버전의 그래픽카드를 사용하고 있어서 이에 맞는 cuDNN과 CUDA toolkit의 설치를 마친 뒤 호기롭게 pip install torch 를 통해 pytorch를 설치 구글 코랩과 같이 멀끔하게 동작하는 환경을 기대하였으나 웬걸, torch.cuda.is_available() >>> False cuda가 잡히지 않았다.(error 1) 뒤늦게 cuda버전에 맞는 pytorch로 설정해줘야 한다는것을 알..

파이썬 - 배열(array)을 flatten 시키는 방법

nested_list = [ [1,2,3], [4,5,6], [7,8,9] ] (1) 2중 for문의 사용 flatten_list = [] for sublist in nested_list: for item in sublist: flatten_list.append(item) (2) 리스트 컴프리헨션의 사용 flatten_list = [item for sublist in nested_list for item in sublist] (3) 넘파이 사용 (thnkas to numpy!) import numpy as np nested_list = np.array(nested_list) flatten_list = nested_list.flatten.tolist() # 넘파이의 flatten 메서드를 사용할 경우, 이..

Loss Function vs Cost Function vs Objective Function은 무슨 차이 인가요?

머신러닝, 딥러닝 관련 다양한 서적과 논문, 강의와 저널등에서 한국말로 "손실함수" 라는 표현에 대응 되는 영어 표현으로 왠지 줄여야만 할것 같은 녀석들, 'Loss function'과 'Cost function' 그리고 'objective function'이 등장한다. 도대체 이놈들의 차이는 뭐길래, 이름을 달리하여 쓰는걸까? ①Loss function : Loss function은 단일 데이터 포인트에 대한 모델의 오차를 측정하는 컨텍스트라고 보면 된다. 훈련 데이터로 예측한 값인 $\hat{y}$ 실제 $y$값간의 차이를 $Loss$라 하고 그 차이를 측정하는 방법인 Loss fuction으로 절댓값 손실, 제곱 손실 등이 있다. (위의 수식은 제곱 손실에 해당한다.) 일반적으로 회귀 문제(regr..