| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- windows forms
- Python
- pip
- Visual Studio
- JSON
- SSH
- Numpy
- 오류
- Selenium
- C++
- 채보
- 기타 연주
- OpenCV
- mysql
- 핑거스타일
- pandas
- paramiko
- 컨테이너
- 프로그래머스
- pytorch
- nvidia-smi
- Docker
- YOLO
- label
- VS Code
- Linux
- C#
- error
- C
- ubuntu
- Today
- Total
목록AI (38)
기계는 거짓말하지 않는다
Attention Score 및 Multihead Attention과 계산Query, Key, Value (Q, K, V) 연산Q, K, V는 입력 x를 서로 다른 선형변환(Linear projection)으로 만든다.입력 x는 임베딩 벡터(Pytorch 기준 nn.Embedding 값)이다. x: (B, T, d_in)Q = Wq(x) -> (B, T, Dk)K = Wk(x) -> (B, T, Dk)V = Wv(x) -> (B, T, Dv)일반적으로 nn.Parameter로 직접 weight를 만들기보다 nn.Linear를 쓴다. (bias 포함, 초기화/관리 유리)왜 Wq의 out도 Dk, Wk의 out도 Dk (dim 크기)인가Q·K 내적을 해야 하므로 마지막 차원(Dk)이 같아야 한다.즉 Q와 K..
Transformer 논문은 "Attention Is All You Need" 참고.Query, Key, Value (Q, K, V)에 대한 내용 및 score 계산Query, Key, Value (Q, K, V)Q, K, V는 각각 Query, Key, Value를 의미하며, 어텐션 메커니즘에서 입력 토큰들 간의 관계를 계산하기 위해 사용되는 표현 벡터들이다. Query (Q): 현재 토큰이 어떤 정보를 찾고 싶은지를 나타내는 벡터.즉, 다른 토큰들로부터 어떤 특성을 참고해야 하는지를 질의하는 역할을 함.Key (K): 각 토큰이 어떤 정보를 가지고 있는지를 요약한 벡터로, Query와의 유사도를 계산하는 기준이 됨.Value (V): 실제로 다른 토큰에게 전달될 정보의 내용을 담고 있는 벡터이며,Qu..
딥러닝에서의 스칼라, 벡터, 행렬, 텐서와 shape 및 내적과 행렬곱, 전치에 관한 기본 내용이다.스칼라스칼라(Scalar)는 숫자 하나 (0차원)벡터벡터(Vector)는 1차원 배열예: v = [1, 2, 3] -> shape (3,)행렬행렬(Matrix)은 2차원 배열예: M = [[1, 2], [3, 4]] -> shape (2, 2)텐서텐서(Tensor)는 n차원 배열예: (B, T, C, H, W)는 5차원 텐서5차원 행렬이라고 부르지 않으며, 행렬은 정의상 2차원이다. 보통 5차원 텐서라고 한다. 이미지 배치는 보통 아래처럼 표기한다.x: (B, C, H, W)B: batch sizeC: channelH, W: height, width 비디오나 시계열까지 포함할 경우x: (B, T, C, H..
Windows 환경에서 multiprocessing(DataLoader의 num_workers>0)이 내부적으로 프로세스를spawn(push)할 때 발생 할 수 있는 오류의 예이다.EOFError: Ran out of input...ForkingPickler(file, protocol).dump(obj)_pickle.PicklingError: Can't pickle at 0x0000029A93FCF820>: attribute lookup on __main__ failed익명 함수(lambda)나 로컬 함수 등 피클로 직렬화할 수 없는 객체를 읽어 들이려 하기 때문이다num_workers=0으로 설정하면 해결은 되지만 여러 workers를 사용하여 데이터를 읽으려 할 때는 이렇게 할 수 없다.아래는 W..
딥러닝 실험을 할 때, 결과의 재현성은 매우 중요하다. 실험의 일관성을 유지하기 위해서는 동일한 조건에서 실험을 반복할 수 있어야 한다. 이를 위해 랜덤 시드를 고정하는 방법을 사용할 수 있고, 아래는 랜덤 시드를 고정하는 함수와 모델을 로드하는 예시이다.import torchimport randomimport numpy as npdef set_seed(seed=42): random.seed(seed) # random module 시드 고정 np.random.seed(seed) # numpy 랜덤 시드 고정 torch.manual_seed(seed) # PyTorch CPU 랜덤 시드 고정 torch.cuda.manual_seed_all(seed) # 멀티 GPU 환경 동일..
PyTorch의 forward() 연산 방식은 기본적으로 순차적으로 실행되는 것처럼 보이지만, 내부적으로 가능한 연산을 병렬로 실행한다. 특히 GPU에서는 연산이 비동기적으로 수행될 수 있고병렬 처리를 더욱 효율적으로 활용할 수 있다.연산 그래프PyTorch에서 forward() 실행 시 생성되는 연산 그래프(Computation Graph)는동적 방식(Dynamic Computation Graph)으로 작동한다.이는 모델의 forward pass 과정에서 연산이 발생할 때마다 그래프가 즉시 생성되는 방식이다.연산 그래프의 특징동적 생성(Dynamic Graph)TensorFlow의 정적 그래프(Static Graph)와 달리, PyTorch는 실행 시점에서 그래프를 즉시 생성한다.따라서 모델 구조를 유..
torchvision.transforms.Resize에서 size 매개변수는 두 가지 사용 방식이 있다.매개변수는 int와 tuple 형식의 (height, width)을 전달할 수 있다.transforms.Resize(256)매개변수에 int 형식을 전달하면 짧은 축을 기준으로 크기를 조정한다.이는 종횡비가 유지된다.입력 이미지의 가로 또는 세로 길이 중 짧은 쪽이 256 픽셀이 되도록 이미지의 크기를 조정한다.긴 쪽은 원래 비율을 유지하면서 비례적으로 조정한다.원본 이미지가 800 x 600(width x height)인 경우, 짧은 축인 세로 길이가 256 픽셀로 조정된다.가로 길이는 size * width / height인 341 픽셀이 된다.transforms.Resize(256, 256)매개변..
Creating a tensor from a list of numpy.ndarrays is extremely slow.Please consider converting the list to a single numpy.ndarray with numpy.array()before converting to a tensor.PyTorch에서 List에 다수의 numpy.ndarray가 있을 경우 torch.tensor로 변환하는 경우 발생한다.이렇게 하면 성능이 저하될 수 있고, List를 단일 numpy.ndarray로 변환 후 tensor로 다시 변환하여야 한다.import numpy as npimport torchdef convert_to_tensor(list_of_arrays): # 리스트를 numpy..