본문 바로가기

언어

(76)
Pytorch 설치 전 - 왜 CUDA를 설치하는가? CUDA를 설치하지 않아도 Pytorch의 설치는 가능하다.하지만, 이 경우 딥러닝 연산에 CPU만 사용하기 때문에 병렬적인 연산이 많이 필요한 작업에서 어려움이 있다. 그럼 병렬 연산은 왜 중요한가? 병렬 연산컴퓨터에서 필수적인 부품이자 컴퓨터의 뇌라고 하는 CPU에는 코어라는 것이 한 개 이상 존재한다. (보통 4~16개 사이) 코어는 간단히 말하면 뇌에서 여러 가지 일을 동시에 처리하기 위한 기관이다.8개 코어가 있다면 동시에 8개의 일을 처리할 수 있는 것이다.여러 코어가 동시에 작업하는 것을 병렬적으로 처리한다고 한다. 사람이 하는 일로 직관적인 예를 들어보자면,코어가 2개인 CPU로 일을 한다는 것은 양뇌가 발달한 한 사람이 양 손을 써서 한 손으로는 편지를 쓰고 한 손으로는 논문을 쓴다고 생..
Class 공부 (클래스 기본개념) Class란?객체 지향 프로그래밍(Object-Oriented Programming: OOP)의 핵심요소클래스는 데이터와 함수를 하나의 재사용 가능한 블록으로 묶는 방법을 제공함이를 통해 데이터 구조를 모델링하고 복잡한 기능의 개발이 가능 Class의 기본 개념클래스: Object의 프로토타입. class라는 키워드를 사용해 정의함class 클래스명:class MyClass:  인스턴스: 클래스에 의해 생성된 객체클래스는 실체가 없이 정의된 것이지만, 인스턴스는 실체가 만들어진 것클래스가 설계도라면 인스턴스는 이 설계도에 따라 만들어진 실제 '건물'# 클래스로 인스턴스를 생성함MyInstance = MyClass()  속성(Attributes): 클래스 내부에 정의된 변수클래스의 상태를 저장함class ..
Curl이란 (개발자나 컴퓨터쪽을 잘 모르지만 데이터 수집을 위해 API call 해보려고 이쪽도 들쑤시는 중에 Curl을 써야된다고 해서 일단 이게 뭔지 공부중)  curl커맨드라인(command line) 또는 스크립트에서 데이터를 전송하기 위해 사용하는 도구다양한 프로토콜을 지원하여 웹 서버와의 통신에 자주 사용함(HTTP, HTTPS, FTP,FTPS 등을 포함하고 있음)웹 페이지의 내용을 가져오거나, 파일 업로드/다운로드, API 테스트와 같은 네트워크 관련 작업 수행 가능 curl만의 명령어가 있으며 옵션이 매우 다양하여 헤더 추가, HTTP 메소드 변겨어, 사용자 인증 정보 전송 등도 가능하여 개발자들 사이에 매우 자주 활용되는 툴임   curl을 사용하기 위해서는 어떻게 해야하나?일단 curl을 사용하..
pandas warning 해결 (Pyarrow will become a required dependency of pandas in the next major release of pandas (pandas 3.0)) 어느날, 판다스를 불러왔는데 DeprecationWarning: Pyarrow will become a required dependency of pandas in the next major release of pandas (pandas 3.0), (to allow more performant data types, such as the Arrow string type, and better interoperability with other libraries) but was not found to be installed on your system. If this would cause problems for youBUILD: 요런 에러같은 메시지가 떴다. 데이터프레임은 잘 불러왔는데 이게 떠서 무슨일인가 싶어서..
02/03 배운 것: isin, str.contains로 쉽게 필터링할 수 있다
[WSL-Docker] 하.. 경로 옮기고 나서 주피터 서버가 왜 다시 안 열릴까 일단 하면서 깨달은 점은 이전 포스팅에서 성공한 원격 주피터 서버는 내 컴퓨터가 쓰고있는 공유기와 같은 ip를 공유하고 있는 컴퓨터에 대해서만 접속이 가능하다는 것이다. 그래서 완전히 원격으로 접속하기 위해서는 DDNS 설정을 해야되는지 아니면 포트포워딩을 해야되는지 뭐 그런 이야기가 있길래 시도중이다. 근데 그것보다 이번에 생긴 문제는 WSL-Docker와 우분투 C드라이브에서 D드라이브로 성공적으로 옮기고 나서 그뒤로 뭔가 실수를 해가지고 우분투 OS 하나가 안 들어가졌다. 그건 그냥 다른 우분투 OS를 받아서 다시 이미지를 pull하고 컨테이너를 여는 방식으로 해결중이다. 그러다가 이제 적응되면 제대로 환경을 갖추려고 해서 대충 그건 해결했다고 생각하고 주피터를 열려고 다시 시도하고 있는데 엊그제 ..
[WSL-Docker] wsl 우분투 C드라이브에서 D드라이브로 옮기기 우리집 컴을 처음 살 때 128기가 짜리 ssd로 사서.. 용량이 너무 적어가지고 정말 미치겠다 그래서 평소에 최대한 c드라이브를 비워두고 D드라이브를 최대한 사용하는데 거기에도 한계가 있어서 c드라이브 110기가 중에서 60기가 정도는 사용하고 있다. 그런데 어제 wsl 도커를 받고 컨테이너까지 받았더니 c드라이브 용량을 아주 쑥쑥 잡아먹었다. 급기야 40기가 정도의 여유분을 다 먹어치워서,, 드라이브 정리가 필요하다는 경고까지 떠가지고 급히 롤을 지웠다.. (롤도 D드라이브에 받았다고 기억했는데 어째 C드라이브에 있었다) 어쨌든 이대로는 제대로 wsl 도커를 쓸 수가 없겠다 싶었다. 앞으로 더 끌어당길 컨테이너도 많은데 고작 테스트해보겟다고 받은 것들 때문에 C드라이브가 가득 차 버리다니,, 당장 개..
[WSL-Docker] 주피터 노트북 원격 페이지 여는데는 성공.. 우분투를 새로 받고 도커 데스크탑을 쓰니 이전에 발생했던 문제가 전혀 일어나지 않고 잘 작동했다... 그래 좋은게 좋은 거라고 잘 쓰면 된거지 이제 도커로 파이썬 컨테이너를 불러온 다음 remote_jupyter라는 이미지로 저장해서 뒤에도 불러올 수 있게끔 한 다음, 도커 내에서 설정을 통해 내 호스트 아이피 주소를 사용해서 주피터 노트북을 원격으로 열 수 있는 페이지를 구성하는 데 까지는 성공했다. 정말 기쁘고,, 이제는 이게 내 컴퓨터라서 열리는 건지 그걸 확인해야 된다 폰에서는 일단 안 열리는데.. 어쨌든 여기까지 오는데 많은 도움이 된 블로그들 https://soundprovider.tistory.com/entry/DockerJupyter-%EC%9B%90%EA%B2%A9-%EC%A3%BC%ED..
[WSL-Docker] 개발하려는 건 아니지만 도커를 받아봅니다.. 작년까지만 해도 우분투 써보겠다고 버추얼박스 받은 다음 고생해서 우분투도 받아서 겨우 실행했는데 윈도우가 튕기고 난리가 났었다. 그래서 그냥 디스크 파티션 나눴던 우분투 리눅스는 지우고 파티션도 원래대로 돌려놓지 않고 대충 두고 살았다.. 그렇게 우분투 리눅스 사용은 포기하고 있던 지난 1년,, 어느날 딥러닝 연구실 친구가 도커를 쓰고있다는게 멋있어보여서 나도 받아보고 싶다고 생각하다가 공모전 준비하면서 남의 서버 빌려쓰는 것도 미안하고 한 번 받아보자 싶어서 드디어 도커를 시도해봤다. 도커의 개념을 읽어보니 컨테이너로 가볍게 구동할 수 있다는 장점 어쩌구 설명이 적혀있었다. 그런거를 꼼꼼히 보다가 오히려 설치 자체를 실패하는 편이라 과감히 설명은 대충 읽고 넘겼다. 역시 설치가 간단해보이면서도 문제가 ..
11/27 배운점 공모전 내용을 언급하면 혹시나 누가 보고 문제 삼을까봐 대회 끝날 때까지 내용은 둘러서 남겨야겟다. 1. 변수 하나의 의미를 잘못 알고 있었는데, 문제가 없어서 그냥 신경 안 쓰고 있다가 의미를 알게 되고 전체적인 변수 수정이 필요하다는 걸 깨달았다. 영향이 클지는 모르겠는데 전처리 과정이 훨씬 더 복잡해졌다. 시행착오가 더 늘어나는 것 같은데 배우는 과정으로 생각하게 되었다. 특히 eda를 항상 제대로 하고 시작해야겟다는 것을 느꼈다. (그러니까 서둘러서 했어야지) 2. 어제 내가 낸 피처 아이디어 적용한 모델은 오버피팅이 너무너무 심해서 교란변수인 것으로 생각됨. 훈련데이터에만 잘 맞는 피처라니 좀 슬픔.. 3. 드랍아웃이 높다고 오버피팅이 무조건 방지되는 건 아니다. 4. 1번 문제를 해결했다고 생..
11/26 공모전 준비하며 배운점 + 느낀점 (잊지말자 reset_index) 1. pickle을 써서 저장하고 load하기 2. 데이터프레임 itertuples()로 for문 돌리기 가능 근데 이렇게 하다보면 에러는 아닌데 크래쉬 문제가 난다고 해놓고, 문제없이 돌아간다. 문제가 있는데 모르고 지나가는 건가? -> 검색해보니 출력데이터 초과시 생기는 문제라고 함. 즉 print()문 안 쓰면 안 생길 문제였음 만약에 바로 출력 내용 보고싶으면 cmd 창에서 jupyter notebook --NotebookApp.iopub_data_rate_limit=1.0e10 이거로 리밋 해제하면 됨 3. 사용자별, 아이템별 계산 한 내용을 딕셔너리로 저장하려고 itertuples()로 데이터프레임을 반복문 돌린 다음에, 튜플로 (사용자인덱스, 아이템 인덱스)를 묶어서 딕셔너리꼴로 저장했다. ..
11/24 데이터 마이닝 정리 (서포트 벡터 머신) 일단 Binary response에 대한 분류 문제 기준으로 설명 서포트 벡터 머신은 크게 두 가지로 나눌 수 있음 1. separable case (No overlap): linear한 class boundary로 error없이 분류할 수 있는 경우를 말한다. 2. Non-separable case (Overlap): linear한 class boundary 하나만으로는 error없이 분류가 절대로 불가능한 경우 separable의 경우 Maximal Margin Classifier (MMC)를 사용하고, non-separable case는 Support Vector Classifier (SVC)를 사용하여 분류를 한다. (서포트 벡터 머신은 그림으로 설명하면 이해가 더 쉽지만, 지금은 말로만 정리) ..
11/23 배운점 파이썬을 오랜만에 해서 다시 감 잡는중 1. reset_index()로 한 셀에 있는 행을 여러 행으로 나눌 수 있다. drop 옵션 설정하면 인덱스로 세팅한 열을 삭제함. 2. groupby('칼럼').apply(함수): 칼럼별로 그룹지은 다음 함수 그 데이터에 계산 해줌 groupby 함수를 사용한 경우 object가 dataframe이 아님 3. drop_duplicates('칼럼'): 칼럼의 행을 확인해서 중복되는 모든 행을 drop 4. 피처 임베딩 이해중
11/17 데이터마이닝 (부스팅, 스태킹) 부스팅은 기본적으로 weak learner를 학습하여 sequential한 tree를 만듦. 그렇다고 parallel한 tree를 만들지 못하는 것은 아님. 부스팅은 최근 개발된 xgboost, lightgbm, catboost를 주로 사용하게 되는데, 이 3가지 부스팅 방법 모두 parallel한 프로세스를 increment해서 속도가 빠른 편. 하지만 부스팅은 사용하는 hyperparameter 개수가 많아서 튜닝이 상당히 오래 걸린다는 단점이 있음. 부스팅의 특징 부스팅은 트리가 sequential하게 생성됨 -> 각각의 트리가 이전의 트리에서 얻은 정보를 사용함 -> 과적합 가능성이 높음 부스팅에는 부트스트랩 샘플링 같은 과정이 없는 대신 subset을 사용할 수는 있음. 부스팅의 하이퍼파라미터로..
11/15 배운점 (얕은 복사와 깊은 복사, 오버리프 그림 불러오기 문제) 1. copy함수 여태까지 copy() 함수를 쓰면 독립적으로 복사가 된다고 알고 썼다. 그런데 오늘 문제를 풀다가 copy를 평소처럼 써서 리스트를 새로 만들었는데 자꾸 복사해온 리스트 원소가 바뀌었다. 알아보니 그동안 잘못된 사용을 하고 있던 것이고 문제가 없다고 착각을 했던 것 같다. copy함수는 얕은 복사로 객체 전체를 복사한 것이 아니라 메모리주소만 복사한 것이라서 copy한 변수를 바꾸면 원 변수에도 영향을 미친다고 한다. 이것은 immutable한 객체에는 영향이 없는데 mutable한 객체에 영향을 미칠 수 있다. 그래서 리스트를 사용할 때 문제가 될 수 있었고, 세트, 딕셔너리 모두 마찬가지로 문제가 발생할 수 있다.얕은 복사의 방법은 내가 사용한 .copy()함수부터, = 을 사용하여..
11/14 배운점 1. 난 그동안 파이썬 경로 막 써와서 몰랐는데 ./ 이 경로는 현재 경로를 의미하고 ../ 이게 현재 경로에서 한단계 이전 경로로 돌아가는 것.. 이걸 모르고 살았으니,, 난 멍청이가 맞다. 2. cuda 메모리가 꽉차는 거로 나왓다. (CUDA out of memory) 그런데 아래에 보면 memory usage가 N/A로 나왔다. 이 문제가 아마도 cuda 11.7을 쓰는데, 가상환경에는 cuda에 맞지 않는 torch, torchvision, torchaudio 버전을 설치해서 발생한 오류인 것으로 보인다고 했다. 그래서 pytorch 들어가서 확인해보았다. run this command를 복붙해서 실행하여 새로운 pytorch 버전을 받았다. (근데 이미 설치된 pytorch 어떻게 안하고 해도..