전체 글
python 리스트 요소 한 줄로 한번에 출력 print(*arr)
코딩 테스트를 풀다보면, 한 줄에 리스트 내 모든 값을 출력해야할 때가 있습니다. 이럴 때 보통 접근하는 방법은 아래처럼 for문을 활용하는 경우가 있습니다. arr = [1, 2, 3, 4, 5] for i in range(len(arr)): print(i, end=" ") 이렇게 for 문을 돌리지 않고 출력하는 방법은 사실 매우 간단합니다. 단순하게 출력하고자하는 리스트 앞에 *를 붙여주어 print문에 넣어주면 됩니다. --> print(*arr) arr = [1, 2, 3, 4, 5] print(*arr) # 1 2 3 4 5 print(arr) # [1, 2, 3, 4, 5] 리스트에 별표 (asterick; *)를 활용하면 리스트 압축을 해제하기 때문입니다.
[딥러닝] 리눅스 ubuntu 22.04 LTS - CLI 설치 방법
설치 시, 다음 블로그를 많이 참고했습니다. (https://shanepark.tistory.com/289) Ubuntu 22.04 LTS 선택 이유 딥러닝 서버를 구축하면서, 리눅스 서버로 ubuntu를 선택하는데에는 그리 어려운 선택은 아니었습니다. centOS 8은 지원이 중단되고, 제가 선택한 부품들을 호환하는 데에는 ubuntu가 최적이었기 때문입니다. 안정성을 생각하면 20.04를 선택할 수도 있었지만, 2023년 1월에 출시한 RTX 4070ti를 지원하는 nvidia driver를 support하는 ubuntu 버전이 22.04 인 것을 감안했을 때, 22.04 LTS를 선택했습니다. Rufus와 usb를 이용한 ubuntu iso 준비 (자세한 설명은 추후 보강) 1. 최소 4GB 이상..
[조립 pc] 개인용 딥러닝 워크스테이션, 구축 예산과 부품 선정 이유
현직 데이터사이언티스로써 회사의 서버를 사유하다시피 사용할 수도 있지만, 노후된 서버 장비와 구식 gpu로는 딥러닝에 대한 갈증이 해소가 되지 않았다. 논문 작업을 진행하고, 트랜스포머 기반의 모델을 점점 응용하며 적용해 나아갈 것 같은 이 시점에서 "딥러닝 서버가 정말 필요할 것 같다"라는 생각이 들었다. 내가 구매한 부품은 다음과 같다. 개인용으로 사용하기에 좋다면 좋은, 부족하다면 부족한 사양이지만, 향후 업그레이드와 확장을 염두에 두고 구매를 진행했다. 허민석이라는 채널의 유튜브를 많이 참고했으며, 해당 유튜브에서 조립한 딥러닝 pc가 2020년 기준인 것을 감안하고 내 기준으로 조금씩 변형하여 부품을 선정했다. 총 330만원의 예산이 들었으며, 운이 좋게도 상당히 저렴한 가격에 고성능 부품을 가..
[pytorch] torch.tensor.detach() 의 기능
파이토치에서 Tensor 객체의 detach() 메소드는 현재 Tensor 객체와 동일한 데이터를 가지지만 연산 그래프(Computational Graph)에서 분리된 새로운 Tensor 객체를 생성합니다. 이 메소드는 일반적으로 Tensor 객체를 다른 Tensor 객체로 변환하고자 할 때 사용됩니다. 예를 들어, 주어진 Tensor 객체에 대한 연산의 결과로 생성된 새로운 Tensor 객체가 있을 때, 이 새로운 Tensor 객체를 사용하여 추가적인 계산을 수행하고자 할 때, 기존 Tensor 객체의 연산 그래프와의 의존성을 제거하여 메모리 사용량을 줄이고 계산 속도를 향상시키는 데 유용합니다. detach() 메소드는 requires_grad 속성을 False로 설정하여 기존 Tensor 객체와 다..
[pytorch] 파이토치 opencv, mxnet, torchmetrics 설치 시 gpu 인식 불가 이슈 해결
pytorch나 tensorflow를 다루다보면 어떠한 패키지를 설치했을 때, 패키지가 cpu 버전으로 내려가는 이슈가 있어서 gpu 인식을 못한다. 이때 해결하기가 굉장히 번거로운데, 필자 같은 경우에는 가상환경을 처음부터 재설치했다. 이런 이슈는 특히 텐서플로우보다는 pytorch에서 더 많이 발생했다. 그중에서도 많이 설치하는 라이브러리를 위주로 몇개 설명을 하자면... opencv 이 패키지는 왜인지는 모르겠지만 conda를 통해 opencv를 설치했을 때는 pytorch에서 cuda를 인식하지 못하게 되었다. 이 경우 pip install opencv-python 명령어를 통해 설치하면 말끔하게 해결되니 참고하자. mxnet mxnet과 같은 경우도 정상적으로 설치하면 문제가 되지 않으나.. ..
[python] 반복자(iterator)와 제너레이터(generator)
반복자(iterator)를 사용하는 이유 파이썬을 사용하다보면 어느 순간 심심치 않게 iter() 또는 next() 등을 목격했으리라 생각한다. 아마 파이썬으로 처음 프로그래밍을 공부했다면 (필자와 같은 비전공자) "결국에는 for문을 활용해서 사용하는 거 같은데.. 쉽게 그냥 list에 담아두고 사용하면 되지 왜 번거롭게 iterator를 만들 당최 왜 사용할까?" 라는 생각이 들 수도 있다. iterator를 사용하는데 여러 이유가 있겠지만, 기본적으로 시간과 비용 측면에서 매우 효율적이기 때문이다. 가장 직관적인 예제는 빅데이터를 활용한 딥러닝 모델을 구현할 때인데, 예를 들면 데이터 100만개를 학습한다고 가정해보자. 100만개를 시작부터 불러놓고 학습을 하는 것과 iterator가 필요한 데이터..
[chatGPT API 연동] chat GPT api 연동 후 한국어 감정분류
chatGPT api 연동 방법에 대해 살펴보겠습니다. chatGPT가 출시된 이후, 지금까지 그냥 웹페이지로 이동해서 대화형식으로 질의를 하고 답변을 받아왔습니다. 만약 연동이 처음이라면, 연동을 위해서 두 가지 작업이 필요합니다. API key 발급 받기 openai 설치하기 API Key 발급 받기 API key를 발급 받으려면 openai 웹사이트로 이동할 필요가 있습니다. https://platform.openai.com/ OpenAI API An API for accessing new AI models developed by OpenAI platform.openai.com 위 링크를 통해 이동하신 뒤, 로그인을 진행하면 됩니다. 다음으로 아래 이미지처럼 우측 상단에서 본인 프로필을 눌러 Vie..
[python] 파이썬 class의 __call__ 함수 (매직메소드)
파이썬을 다루다보면 __call__함수에 직면하는 경우가 생깁니다. 저와 같은 데이터 사이언티스트의 경우에는 __call__함수는 Tensorflow의 def call() 메서드나 PyTorch의 def forward() 메서드가 대표적이라고 할 수 있는데요. 인스턴스를 생성하고 자동으로 클래스의 객체도 호출할 수 있게 만드는 기능입니다. 아래처럼 리스트를 받아 난수 10개를 뿌려주는 난수생성기 클래스로 표현되었다고 생각해봅시다. 인스턴스 메서드 구현 아래처럼 pick 메서드를 활용할 때, 출력물이 생성되고, 10개의 난수를 담은 리스트가 리턴되는 것을 확인할 수 있습니다. import random class RandomNumberReturn: def __init__(self): self.numbers ..