정리 조금 47

Mixed Precision (1) 정수 표현법

Intro Mixed Precision을 사용하려 보니, 옛날 컴공때 나를 스쳐 지나간 개념이 사용됬다. 제한된 bit로 어떤 숫자를 어찌 표현 가능할까? 다시 확인해보자. 정수의 표현 부호가 없는 정수 컴퓨터는 정수를 이진수로 표현한다. 가령, 8 bit는 00000000 ~ 11111111 까지 표현가능하다. 10 진수로 하자면 0 ~ 255 범위를 표현 가능하다는 사실이다. 마찬가지로 N bit는 아래만큼 표현 가능하다. $$0 \sim 2^{N}-1$$ 하지만, 이는 어디까지나 부호가 없는 정수의 표현에 해당한다. 부호가 있는 정수 Sign magnitude 부호 정보까지 표현 하려면, 주어진 bit중 하나의 bit에 부호 정보를 표시하는 방법이 있다. 예를들어, 아래처럼 가장 앞자리 bit에 1..

[Linux] SCP File Transportation

맨날 할 때마다 까먹는... Local To Server Local에서 Server로 파일 전송할 때에는 아래와 같은 형식의 명령어를 내리면 된다. scp [FILE_TO_SEND] [USER_NAME]@[IP_ADDRESS]:[RECEIVING_ADDRESS] Local의 "/home/example.txt" 파일을 server의 "/home/test"에 보내려 할때 아래와 같이 보내면 된다. scp /home/example.txt jhyu@123.456.78.901:/home/test Server To Local 순서만 반대로 해주면 된다. > scp [USER_NAME]@[IP_ADDRESS]:[FILE_TO_SEND] [RECEIVING_ADDRESS] Server의 "/home/test/examp..

정리 조금/Codes 2024.03.11

Deep Copy & Shallow Copy

Intro 코딩을 하다보면 자주 객체를 복사하게 된다. 그런데 Python에서 가끔 복사 된 객체를 바꾸었더니, 원본도 같이 바뀌는 이상한 현상이 발생하기도 한다. (아래 참고) import copy # 원본 리스트 original_list = [1, 2, [3, 4]] # 복사 copied_list = original_list # 복사본의 수정 copied_list[2].append(5) # 결과 print(original_list) # [1, 2, [3, 4, 5]] print(copied_list) # [1, 2, [3, 4, 5]] 이유는 바로 나도 모르게 Shallow copy를 사용했기 때문이다. Shallow Copy Shallow copy란 원본 객체와 복사본 객체 모두 같은 내부 객체를 ..

Macro & Micro Averaging

IntroMulticlass에서 Overall Accuracy와 Macro F1 score는 언제 같아지는가? 라는 질문으로 시작된 몇가지 metrics에 대한 조사. 생각보다 부정확하게 알고있었다...! Precision, Recall 그리고 F1 score에 대해서는 아래 포스트에서 다루었으니, 오늘은 multicalss에서의 metric 대해 조금만 생각해보고 넘어가자.https://jaehong-data.tistory.com/5 F1 scoreIntro 이진 분류는 두가지 범주를 갖는 표본을 분류하는 것이다. 분류는 일상 뿐 아니라 여러 산업에서 중요하게 사용되어 왔다. 전통적인 통계 모형인 (MLE를 IRLS로 추정하는) logistics regression부터,jaehong-data.tisto..

[Python] Wallus Operator, :=

Intro Wallus (바다코끼리) 연산자는 바다코끼리를 연상시키는 이모티콘 (:=) 과 같은 모양으로, Python 3.8부터 사용이 가능해졌다. Assign & Return을 한번에 진행하는 기능이 있다. Example Wallus operator는 for문과 주로 같이 사용되는데, 이를 사용하지 않고 3보다 큰 index를 고르는 예제를 코딩하면 아래와 같다. numbers = [1, 2, 3, 4, 5, 6] index = None for i, num in enumerate(numbers): if num > 3: index = i break print("Index without walrus:", index) 반면, wallus operator를 사용하면 아래와 같이 line수가 줄어든다. num..

정리 조금/Codes 2024.02.23

Inner & Outer Product

의미 Inner product(內積 , 내적)와 Outer product(外積, 외적)는 공대시절 의미는 모른채 식을 외워 계산에만 적용했다. 의미는 백터 사이의 product, 즉 곱 연산으로 매우 간단하다. 뭔가 내적 외적이라 둘 사이에 반대되는 개념같아 보이지만, 그냥 다른 두 연산이다 (내 얕은 통찰로는 그렇다). 두 벡터 $\textbf{x}$와 $\textbf{y}$에 대해 내적과 외적이 어떻게 계산되는지, 어떤 결과가 나오는지 그리고 어떤 기하적 의미를 갖는지 엄밀하지 않게 알아보자. 내적 우선 개인적으로 나름 내린 내적의 의미는 두 벡터가 협동하여 낼 수 있는 힘의 크기이다. 따라서 결과는 스칼라로, 두 벡터의 방향성이 일치하는 정도만큼 두 벡터의 크기를 곱한다. 예를들어, 아래와 같이 방..

Internet Protocol

용어 Packet: Packet(패킷)은 pack과 bucket의 합친 말로, 네트워크가 전달하는 데이터의 정형화된 조각이다. 조각내어 보내는 이유는 트래픽이 많아지는 현상을 방지하기 위함. (대역폭이라는 개념이 들어감) 깊게들어가면 어려우니, 이정도만 알아두자. Forwarding: Forwarding은 패킷을 받으며, 보내는 작업을 하는 작은 개념이다. Routing: Routing은 패킷이 그 패킷의 header에 쓰여있는 목적지 까지 갈 수 있도록 경로(route)를 찾는 과정으로, forwarding을 할 수 있게 갱신하는 작업이다. Redundancy와 fault tolerance에 대한 내용이 아래 잘 나와있으니 읽어보자, 재미있다. https://www.khanacademy.org/comp..

[Docker] Restart

종종 여러 문제로 Docker를 재시작 해야한다. 나는 주로 아래 포스트한 내용으로 재시작한다. https://jaehong-data.tistory.com/45 Docker, GPU 인식 일반적으로 Ubuntu server에서 docker를 사용하는, 새로운 GPU 환경에서 작업을 시작했다. 그 과정에서 잘 돌아가던 코드에서 갑자기 GPU 인식을 못하는 warning이 발생했다. 조사를 해보니, GPU 인식 문제 jaehong-data.tistory.com 재시작 방법 먼저 재시작 하고싶은 container id를 알아내자. docker ps -a 그리고 id를 입력하여 재시작하면 끝. docker container restart [container id] 그림 출처 https://amalgjose.co..

정리 조금/Codes 2024.01.23

[Python] Image Data, Shape Transformation

CIFAR10 CIFAR10 이미지를 사용하려 이미지를 다운받아 읽어봤는데, plt.imshow(img.astype('uint8')) 아래와 같은 에러가 발생했다. TypeError: Invalid shape (3072,) for image data 우선 CIFAR10은 채널마다 32 $\times$ 32 의 픽셀로 표현되어있는 이미지 자료이다. 때문에 32*32*3=3072의 값이 에러에 보인다. Code 이 문제는 내가 받은 CIFAR10이 32 $\times$ 32 $\times$ 3 이런 모양이 아니라, 3 $\times$ 32 $\times$ 32의 모양으로 제공되기 때문에 발생한다. Torch에서도 이런 식으로 shape을 갖는다. 이 문제를 해결하고자 transpose라는 함수를 사용해 일반..

정리 조금/Codes 2023.12.04