분류 전체보기

    도커가 필요한 이유

    도커 없이 클라우드 환경 이주 한다면.. 지금 우리는 도커가 없는 세상에서 살고 있다고 생각해보자. 우리 회사의 애플리케이션의 클라우드 환경을 구글로 이전하려고 준비중에 있다. 클라우드 서비스는 IaaS, PaaS[1] 이 두가지 중에서 고민하고있다. PaaS를 사용한다면 우리는 애플리케이션의 각 컴포넌트들을 하나씩 하나씩 클라우드의 매니지드 서비스로 옮기는 굉장히 까다로운 작업을 진행해야한다. 이는 또한 특정 클라우드에 종속되는 결과를 낳지만 비용적으로는 운영비를 줄일 수 있다. IaaS를 사용한다면? 이주작업이 굉장히 간단해진다. 각 애플리케이션의 컴포넌트들을 가상머신에서 동작시키면 된다. 특정 클라우드에 종속될 걱정도 없다. 하지만 운영비가 비싸지게 된다. 도커와 함께 클라우드 환경을 이주한다면? ..

    [Error] hdbscan 패키지 설치 에러

    [Error] hdbscan 패키지 설치 에러

    Error OS는 윈도우11을 사용하고 있으며 파이썬 3.6 버전을 활용해 hdbscan 패키지를 설치하려고 하던 중 에러가 발생했다. pip install hdbscan 패키지에서 요구하는 넘파이 버전이 없는 듯 하다. 해결방법 Conda를 활용하여 설치해 위 문제를 해결했다. conda install -c conda-forge hdbscan

    야간전술보행 (Python)

    야간전술보행 (Python)

    문제설명 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/133501 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 중요 포인트 화랑이가 이동하면 경비병들이 모두 근무를 선다.(1초에서 함께 시작) 화랑이는 1초에 1m/s로 움직이며 경비병들은 근무와 휴식을 번갈아가며 수행한다. 경비병들의 감시 구간은 겹치지 않는다. 화랑이는 멈추지 않는다. 화랑이가 경비병의 감시 구간을 지나갈 때 근무중이라면 붙잡힌다. 입력되는 경비구간은 [시작, 끝]이 아니다. (끝 부분이 앞으로 올 수도 있다.) 출..

    글또 7기를 끝 마치며

    5월에 글또 7기에 처음 조인하며 벌써 글또 7기의 마지막 글을 작성하게 되었습니다. 이번시간에는 글또 7기를 활동하며 느꼈던 점과 간단하게 글또 7기 활동에 대한 회고를 진행하고자 합니다. 글또를 시작할 때 학부생 때는 인공지능에 대해 많은 관심을 갖고 데이터사이언티스트나 인공지능 연구 혹은 개발자가 되고 싶었습니다. 다양한 ML 프로젝트를 진행하였고 여러가지 공모전도 모두 데이터분석과 관련된 공모전에 참여하며 많은 경험을 쌓았습니다. 군대에 입대 후 전역이 약 1년정도 남은 시점에 진로에 대한 고민을 하기 시작했습니다. 학부때 했던 인공지능을 계속 하는 것이 맞을까? 라는 고민을 정말 많이 했습니다. 왜냐하면 그 당시 제 생각에는 인공지능을 제대로 하기 위해서는 대학원은 필수라고 생각했었기 때문이죠...

    Attention - Query, Key, Value의 의미?

    Attention - Query, Key, Value의 의미?

    Attention이 나온 이유? Attention은 LSTM 혹은 RNN으로 만들어진 Encoder Decoder에서 나온 개념입니다. Encoder에 입력에 대한 정보를 은닉벡터로 함축시켜 전달을 하는데, 이 은닉벡터가 모든 정보를 담기 어렵다는 이유에서 탄생하게 되었습니다. Decoder에서 항상 Encoder의 마지막 은닉벡터를 활용하는데, 이 정도에다 +로 Encoder에서 현재 위치와 연관된 단어에 대한 은닉벡터를 다시한번 봐서(집중해서 - Attention) 은닉벡터로 표현하지 못한 부분까지 보려는 노력을 하게됩니다. Attention의 이해 어텐션이 계산되는 과정을 간단히 설명드리고 우리가 궁금한 Query, Key, Value를 알아보겠습니다. Encoder에서 들어온 값은 I am a s..

    Hello RL : Frozen Lake 소개 및 기본 코드

    Hello RL : Frozen Lake 소개 및 기본 코드

    Frozen Lake? Frozen Lake는 RL의 hello world와 같은 환경입니다. 게임은 굉장히 간단합니다. 4x4의 환경이 설치됩니다. (0,0) 시작지점에서 (3,3)까지 agent가 이동을 하면 게임이 종료됩니다. 이 때 환경에는 구덩이(H)가 있을 수 있습니다. 그 구덩이를 피해서 목표지점(3,3)까지 이동해야합니다. 구덩이(H)에 빠질경우 캐릭터는 죽게됩니다. (이 각각의 칸을 우리는 state라고 부르죠.) agent는 상하좌우 4개의 action을 할 수 있습니다. 그런데 이 action에 따라 원하는 방향으로 이동하지는 않습니다. 왜냐하면 얼음이기 때문에 미끄러져 다른 state로 이동할 수 있기 때문이죠. 위 예에서 출발을 할 때 아래로 가고 싶어 아래로 이동을 명령하였는데 ..

    seaborn을 활용한 시각화

    seaborn을 활용한 시각화

    지난 시간에 matplotlib을 활용하여 데이터를 시각화하는 방법에 대하여 알아보았습니다. matplotlib보다 좀 더 편리하게 시각화를 사용할 수 있도록 만들어주는 것이 seaborn 라이브러리입니다. 이번 시간에는 seaborn 라이브러리를 활용하여 데이터를 시각화하는 방법을 알아보도록 하겠습니다. 지난 글 : 2022.08.29 - [Language/Python] - matplotlib을 활용한 시각화 기초 matplotlib을 활용한 시각화 기초 머신러닝, 딥러닝 공부를 하다보면 항상 모델의 평가와 데이터 분석에서 그래프로 시각화하는 코드를 마주하게 됩니다. 코드가 다소 직관적이고 간단하게 그래프를 그릴 수 있어서 읽고 이해하 cnu-jinseop.tistory.com seaborn 라이브러리..

    Docker login error : Error saving credentials: error storing credentials 해결방법 (Mac)

    도커로 NVIDIA NGC에 접속하려고 하는데 계속 아래와 같은 에러가 발생하였습니다. Error saving credentials: error storing credentials - err: exit status 1, out: 'Post "http://ipc/registry/credstore-updated": dial unix /Users/myrepo/Library/Containers/com.docker.docker/Data/backend.sock: connect: connection refused' 이 경우에는 ~/docker/config.json 경로의 파일에서 아래 코드를 삭제해주면 됩니다. (vi editor로 접속) "credStore": "desktop" 위를 찾아 삭제해주면 정상적으로 로그..

    Pytorch Dataset과 DataLoader

    파이토치에서 데이터들을 학습할 때 굉장히 유용한 기능으로 DataLoader가 있습니다. DataLoader는 파이토치에서 데이터들을 원하는 batch size로 잘라줍니다. DataLoader를 사용하면 batch size에 맞추어 학습을 굉장히 쉽게 학습을 수행할 수 있습니다. 이 때 DataLoader에 넣어주어야 하는 값이 Dataset이 됩니다. How To Use Dataset from torchvision import datasets, transforms train_dataset = datasets.MNIST( root = "data", download = True, train = True, transform = transforms.Compose([ transforms.ToTensor() ]..

    torchvision.transforms (ToTensor, Normalize, Resize, RandomCrop,Compose)

    transforms 모듈은 이미지를 학습을 위해 적절히 변환할때 사용합니다. 모듈에서 주로 사용하는 것을 소개하겠습니다. module import import torchvision.transforms as transforms transforms.ToTensor transforms.ToTensor() Pytorch의 배열은 배열구조가 C*H*W(C:채널, H:높이, W:너비)입니다. 하지만 PIL이미지와 Numpy 배열에서는 H*W*C입니다. ToTensor는 이러한 데이터의 구조를 변경해줍니다. 또한 ToTensor는 이미지 픽셀의 밝기정도를 Scale해줍니다. 밝기정도가 0~255로 표시되었다면 그 값을 0~1로 scale해주게 됩니다. transforms.Nomalize transforms.Norma..

    matplotlib을 활용한 시각화 기초

    matplotlib을 활용한 시각화 기초

    머신러닝, 딥러닝 공부를 하다보면 항상 모델의 평가와 데이터 분석에서 그래프로 시각화하는 코드를 마주하게 됩니다. 코드가 다소 직관적이고 간단하게 그래프를 그릴 수 있어서 읽고 이해하는데는 무리가 전혀 없었습니다. 하지만 직접 시각화를 위해 그래프를 그릴 때는 굉장히 막막하고 어려움을 느꼈습니다. 이번 포스팅을 통해 matplotlib을 활용하여 그래프를 시각화하는 코드들을 정리하고 이해해보려고 합니다. 시각화는 눈으로만 이해하는 것보다 직접 코드를 따라 구현해가며 이해하는 것이 직접 사용하기 위해 훨씬 많은 도움이 되므로 직접 코드들을 따라치면서 이해하는 것을 추천드립니다. matplotlib matplotlib는 Python의 그래프를 그려주는 굉장히 유용한 라이브러리입니다. matplotlib를 활..

    [Pytorch] nn.module을 상속받을 때 super().__init__()을 하는 이유

    [Pytorch] nn.module을 상속받을 때 super().__init__()을 하는 이유

    파이토치에서 클래스로 Layer나 Model을 구현해주면 항상 생성자에서 super(class이름, self).__init__()을 입력해줍니다. 왜 이것을 입력해야 하는지 궁금하여 알아보았습니다. super().__init__()이 없다면? import torch class Test(torch.nn.Module): def __init__(self): self.linear = torch.nn.Linear(3,2) def forward(self,x): return self.linear(x) Test를 위해 굉장히 간단한 torch.nn.Module을 상속받는 클래스를 만들어보았습니다. 그리고 이 클래스를 활용해 모델을 만들어보겠습니다. model = Test() 생성을 하게 된다면 AttributeErro..

    [서평]밑바닥부터 시작하는 딥러닝1

    [서평]밑바닥부터 시작하는 딥러닝1

    서평 전 잡담(이 책을 읽은 이유) 저는 군대를 전역하고 연구실에 조인하여 딥러닝을 공부하기 시작한 지 1달 조금 더 지났습니다. 학부 때 저는 이론적인 기초지식을 차곡차곡 쌓아가며 공부하는 학자형 스타일을 고수하였습니다. 하지만 김영한 님의 강의로 백앤드를 공부하며 이론을 모르더라도 일단 실무적으로 삽질하며 부딪히는 야생형 스타일이 굉장히 빠르게 무엇인가를 습득할 수 있다는 것을 깨달았습니다. 그래서 저는 연구실에 조인하고 1달 동안은 파이토치를 활용해 무작정 데이콘 대회에 참여해 딥러닝으로 문제를 해결하려고 하였습니다. 정말 빠른 시간에 파이토치를 사용하는 방법을 익힐 수 있었지만 왜 그렇게 해야 되는지에 대하여 납득이 되지 않았습니다. 왜? 미분(backward)을 하기 전에 예측(forward)을..

    [PGM] 점프와 순간이동

    문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/12980 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 👨🏻‍💻 핵심 스킬 👨🏻‍💻 Greedy 1. 문제 이해 점프는 K칸을 이동하는 것이고 순간이동은 지금까지 온 거리의 2배만큼 이동하는 것 입니다. 이 때 주의해야할 점은 점프는 배터리가 소모되고, 순간이동은 소모되지 않는다는 점입니다. 저는 이 문제를 처음에 대충 읽고 풀다가.. 뒤로도 점프하는 경우까지 고민했네요.(뒤로 점프가 가능하다면 예를들어 15로 가야할 경우에는 16에..

    Object Detection의 개요

    Object Detection의 개요

    글을 작성하는 시기는 연구실에 조인하여 공부한 지 약 한 달이 되는 시점입니다! 머신러닝에 대한 기본적인 공부와 함께 여러 딥러닝 모델에 대하여 학습을 하며 Computer Vision의 분야인 Object Detection에 많은 관심이 생겼습니다. 이번 글을 시작으로 Object Detection에 대한 개요부터 주요 논문에 대한 리뷰까지 시리즈로 작성해보도록 할 계획입니다! Object Detection? Object Detection이란 컴퓨터가 물체를 인식하는 것을 의미합니다. 위 사진은 Object Detection의 예시입니다. 컴퓨터가 기존에 학습되어있는 모델을 바탕으로 사람과 행글라이더를 타는 사람들을 Detection 한 모습을 볼 수 있습니다. Computer Vision의 Objec..

    모델 평가(Evaluation)

    모델 평가(Evaluation)

    지난 시간에 Sklearn 라이브러리를 활용하여 데이터를 전처리하는 방법을 알아보았습니다. Sklearn 라이브러리들이 모델을 생성하고 학습하는 것을 굉장히 편리하게 해주어 누구나 쉽게 모델을 만들 수 있습니다. 그렇다면 우리가 만든 모델이 과연 어느정도의 성능을 보이는지 평가를 해야할 것입니다. 이번 글에서는 모델을 평가하는 지표들인 Confusion Matrix에 대하여 알아보도록 하겠습니다. Confusion Matrix? Confusion Matrix는 모델이 2가지 경우에 대하여 예측한 결과를 의미합니다. 즉 양성인지 음성인지를 판단한 결과를 보여줍니다. 코로나 때문에 PCR검사를 받은 경험이 있나요? PCR검사를 받으면 당일 저녁 혹은 다음날 아침에 결과 문자를 받게 됩니다. 이 때 Posit..

    Sklearn 라이브러리를 활용하여 데이터 전처리하기

    Sklearn 라이브러리를 활용하여 데이터 전처리하기

    2주간 파이썬의 Sklearn 라이브러리를 공부하였습니다. 굉장히 편리하게 데이터를 전 처리하고 모델링할 수 있는 다양한 기능들을 배울 수 있었습니다. 이번 글에는 Sklearn 라이브러리를 활용하여 데이터를 전처리하는 방법들을 익히고, 실습으로 타이타닉의 생존자를 예측하는 문제의 데이터를 전처리해보겠습니다. 문제 소개 : Titanic - Machine Learning from Disaster Titanic - Machine Learning from Disaster | Kaggle www.kaggle.com *Titanic 문제는 Kaggle의 Hello World라고 불릴 정도로 많은 사람들이 처음 Kaggle에서 머신러닝 문제를 풀 때 시작하는 문제입니다. 1912년에 타이타닉호가 빙산에 부딪히며 ..

    파이썬으로 머신러닝 시작하기

    파이썬으로 머신러닝 시작하기

    머신러닝이란? 알파고의 등장 제가 머신러닝에 관심을 갖기 시작한 계기는 알파고의 등장이었습니다. 당시 저는 컴퓨터공학과 1학년 학생이었습니다. 언론에서는 알파고와 이세돌 9단의 대국으로 뜨겁게 달구어지고 있었습니다. 알파고의 등장으로 한국에도 머신러닝 열풍이 불기 시작하며 저도 자연스럽게 머신러닝에 관심을 가지게 되었습니다. 머신러닝이란? 머신러닝은 기계가 직접 학습을 하여 결정을 내릴 수 있도록 모델링하는 방법입니다. 예를들어 이미지를 제공하면 그 이미지가 어떤 동물인지를 컴퓨터가 직접 결정하도록 만드는 것을 의미합니다. 0과 1만을 인식하는 컴퓨터가 스스로 인지하고 판단하도록 만들기 위해서 과거에는 if-then을 활용하여 구현하였습니다. 대전 알고리즘을 가이드 해주는 인공지능은 과거에도 굉장히 쉽..