Python
-
[flask] python - UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start bytePrograming/python 2021. 11. 22. 10:42
flask로 백엔드 서버를 구축중이다. 문제 발생의 주요 부분은, 프론트로부터 전달받은 이미지(bytes) 파일을 celery worker에게 전달해주는 과정에서 bytes 전송시 string으로 형변환 해서 넘겨줘야한다. (message broker는 'redis' 사용) 그런데, decode('utf-8') 함수를 사용해 bytes to string 형변환을 하니 아래와 같은 에러가 뜬다. UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte 파이썬은 기본적으로 'utf-8' 문자 포맷을 사용하는데 전달받은 이미지 파일의 포맷이 달라서 생기는 문제였다. (utf-16이라는 말이 있음) 실제로 ..
-
[CORS] react & flask - Access to XMLHttpRequest at 'http://localhost:8080/' from origin 'http://localhost:3000' has been blocked by CORS policy: The value of the 'Access-Control-Allow-Credentials' header in the response is '' which must be 'true' when ..Frontend 2021. 11. 2. 15:03
최근 ReactJS로 웹 페이지를 만들고있다. 이 웹 페이지는 파일을 업로드하는 기능이 있는데, 업로드 과정에서 CORS 에러가 발생됐다. React는 localhost:3000을 사용하고 flask는 localhost:8080 포트를 사용한다. 굳이 node.js를 사용하지 않고 flask를 사용한 이유는, AI 모델과 연동이 되기 때문에 python 기반의 서버로 구축하는 것이고 django에 비해 구축이 가벼워서 채택했다. [문제 발생] react(localhost:3000) post-> flask(localhost:8080) Access to XMLHttpRequest at 'http://localhost:8080/test' from origin 'http://localhost:3000' has ..
-
iter(dataloader) 시 TypeError: cannot pickle 'Environment' objectAI 2020. 12. 14. 15:20
아래의 코드와 같이 리스트에 데이터로더를 iterator로 넣고자하는데 에러가 발생 했다. _data_loader = torch.utils.data.DataLoader( _dataset, batch_size=_batch_size, shuffle=True, num_workers=int(opt.workers), collate_fn=_AlignCollate, pin_memory=True) self.dataloader_iter_list.append(iter(_data_loader)) TypeError: cannot pickle 'Environment' object append에 아무런 문제가 없어보이지는데 원인은 데이터로더 생성시 num_workers 값 떄문이다. num_workers=0으로 해주면 해결된다...
-
[pytorch] MLP model source code by pythonAI 2020. 4. 24. 16:57
아래는 pytorch로 작성한 MLP모델의 소스코드이다. class MLPModel(nn.Module): def __init__(self, in_dim, out_dim, hid_dim, n_layer, act): super(MLPModel, self).__init__() self.in_dim = in_dim self.out_dim = out_dim self.hid_dim = hid_dim self.n_layer = n_layer self.act = act self.fc = nn.Linear(self.in_dim, self.hid_dim) self.linears = nn.ModuleList() for i in range(self.n_layer-1): self.linears.append(nn.Linear(s..
-
[pytorch] How to use nn.CrossEntropyLoss() 사용법AI 2020. 4. 21. 19:17
아래 코드는 pytorch에서 loss function으로 CrossEntropy를 사용하는 예이다. cls_loss = nn.CrossEntropyLoss() test_pred_y = torch.Tensor([[2,0.1],[0,1]]) # 실제 사용에선 softmax에 의해 각 행의 합이 1이 될 것이다. test_true_y1 = torch.Tensor([1,0]).long() # 1은 true값이 1번째(클래스)라는 것을 의미 test_true_y2 = torch.Tensor([0,1]).long() print(test_pred_y) print(test_true_y1) print(test_true_y2) print(cls_loss(test_pred_y, test_true_y1)) print(cls..
-
[PyTorch] How to run pytorch using conda by linking vscode and jupyter notebook on OSX(mac).AI 2020. 4. 17. 14:26
pytorch로 deeplearning 예제를 로컬(osx)에서 실습해보려고 한다. 에디터는 pycharm을 많이 쓰는거 같던데, 나의 경우 항상 쓰던 vscode를 사용하고자 한다. 예제 소스는 .ipynb 파일로 되어있어서, .py 파일로 변형하지 않고 사용하기 위해 jupyter notebook을 사용하려 한다. 자 그럼 이제 개발 환경을 구축해보자. 1. Install python 3.x 링크 기본적으로 python 3.x를 설치해준다. (설치 과정은 생략..) 2. Install vscode & extensions. VSCODE 그리고 확장 프로그램을 설치한다. 설치가 완료되면 vscode를 재시작 해준다. 3. Install jupyter $ pip3 install --upgrade pip $..
-
CNN - pytorch convnet에서 zero padding 값 구하는 공식AI 2020. 4. 16. 17:22
input이 7x7, 필터가 3x3인 경우 zero padding 값을 몇으로 해야 7x7의 결과를 얻을 수 있을까? stride가 1인 경우 필터 크기를 2로 나눈 몫이 zero padding 개수가 된다. 그렇다면 stride가 2이거나 그 이상인 경우는 어떻게 계산해야 할까? 내 나름대로 식을 한번 구해봤다. input 크기: I(대문자 i) ex) 7x7 -> 7 필터 크기: F stride: S 원파는 output 크기: O padding: P 공식: P = ( OS - I + F - 1 ) / 2 공식에 대입을 해보면, P = ( 7*2 - 7 + 3 -1 ) / 2 = 9 / 2 = 4(몫) 확인을 해보자. 행만 확인해보면 7번의 스탭이 나오는걸 확인 할 수 있다.(열도 같음) 그렇게해서 우..
-
[tensorflow] What argmax means?(axis) ?AI 2020. 3. 25. 10:31
텐서플로우 예제를 실습 하던 도중 아래와 같은 코드를 접했다. epoch_accuracy(tf.argmax(model(x), axis=1, output_type=tf.int32), y) epoch_accuracy는 매트릭스를 이용해 정확도를 측정하는 함수이다. 참조 이 함수는 1차원 배열 형태인 2개의 파라미터를 받으며, 예측된 값과 y값을 넘겨주면 된다. 만약 label이 3개인 경우 [1, 0, 0, 1, 1, 2] 이런 형태가 될 것이다. y값은 그냥 넘겨주면 된다. 예측값은 다차원의 배열이기 때문에 argmax를 사용해 1차원의 배열로 만드는 동시에 최대값만 남긴다. argmax에서 2번째 인자로 axis(중심축)를 받는데 이 매개변수가 주요 포인트이다.(헷갈릴 수 있다.) 2차원 배열의 경우 r..