PyTorch는 Facebook에서 개발하고 유지보수하는 오픈소스 머신러닝 프레임워크로, PyTorch는 다양한 분야의 머신러닝 모델링을 지원하며, 특히 딥러닝 모델링에 강점을 가지고 있다. PyTorch는 Python을 기반으로 하며, NumPy와 유사한 구조를 가지고 있어서 사용자들이 쉽게 딥러닝 모델을 구현하고 테스트할 수 있으며, 또한 PyTorch는 GPU를 활용한 병렬처리를 지원하여 딥러닝 모델의 학습 및 추론 속도를 높일 수 있다. PyTorch의 가장 큰 특징 중 하나는 동적 계산 그래프(dynamic computation graph)를 사용한다는 것이다. 이는 모델을 정의하면서 동시에 계산 그래프를 만들고, 이를 통해 모델이 학습하는 동안 그래프가 자동으로 업데이트된다는 것을 의미하며, ..
동적 계산 그래프(dynamic computation graph)는 PyTorch에서 사용하는 특징적인 기술 중 하나로, 동적 계산 그래프는 모델을 정의하면서 동시에 계산 그래프를 만들고, 이를 통해 모델이 학습하는 동안 그래프가 자동으로 업데이트되는 방식이다. 기존의 딥러닝 프레임워크에서는 정적 계산 그래프(static computation graph)를 사용하는 경우가 많았는데, 정적 계산 그래프는 모델을 정의할 때 미리 계산 그래프를 만들어 놓는 방식이다. 이는 모델을 한 번 정의하면 그 이후에는 수정이 불가능하며, 모델을 정의할 때 모든 계산 그래프를 한 번에 만들어야 한다. PyTorch에서는 Autograd라는 자동 미분 기능을 통해 동적 계산 그래프를 구현한다. * Autograd는 모델의 ..
GPU를 활용한 병렬처리는 CPU보다 빠른 속도로 대규모 데이터를 처리할 수 있는 기술이다. GPU는 CPU보다 대량의 연산을 더욱 빠르게 처리할 수 있는 구조를 가지고 있기 때문에, 대규모 데이터 처리를 위해 많은 연산을 수행해야 하는 머신러닝 모델의 학습 및 추론에 적합하다. 병렬처리는 CPU와 GPU의 처리 방식에 차이가 있는데, CPU는 일반적으로 시리얼(직렬) 처리 방식으로 동작한다. 이는 하나의 작업을 순차적으로 처리하는 방식이며, 복잡한 작업을 처리할 때는 느리게 동작한다. 반면 GPU는 많은 수의 작은 작업을 동시에 처리하는 병렬 처리 방식으로 동작한다. 이는 대량의 데이터 처리를 빠르게 수행할 수 있도록 한다. PyTorch는 GPU를 활용한 병렬 처리를 지원함으로써 GPU를 활용하여 모..
1) 개념 머신러닝은 인공지능의 한 분야로, 컴퓨터가 데이터를 분석하고 패턴을 발견하여 학습하고 예측하는 알고리즘을 개발하는 것이다. 이를 위해 지도 학습(supervised learning), 비지도 학습(unsupervised learning), 강화 학습(reinforcement learning) 등 다양한 학습 방법이 사용된다. 딥러닝은 머신러닝의 한 분야로, 인공신경망(Artificial Neural Network)을 기반으로 한 머신러닝 알고리즘이다. 이 알고리즘은 다층 신경망을 통해 대용량의 데이터를 처리하고, 데이터의 특징(feature)을 추출하고 예측하는 것이 가능하다. 딥러닝은 높은 수준의 인식 능력을 가지고 있어, 이미지 인식, 음성 인식, 자연어 처리 등 다양한 분야에서 활용되고 ..
HTML 1) 정의 - HTML은 웹 페이지의 구조와 내용을 정의 2) 기능 - 웹 페이지에서 볼 수 있는 모든 텍스트, 이미지, 비디오 및 다른 콘텐츠의 뼈대를 만든다. 3) 종류 - 콘텐츠를 가지는 태그 ex) - 콘텐츠를 가지지 않는 태그 ex) - block 요소(줄 바꿈) ex) , - inline 요소(한 줄) ex) , - inline-block 요소 ex) CSS로 성질을 바꾸는 것. 4) 구조 HTML Example This is an example of HTML code. 태그는 HTML 문서의 루트 요소를 나타낸다. HTML Example This is an example of HTML code. JavaScript 1) 정의 - JavaScript는 HTML 및 CSS와 함께 사용하..
계속해서 Docker에 관심이 갔었고 이번 기회에 Docker 환경에서 Django 실행까지 가이드를 작성해보려고 한다. 도커를 사용하는 이유Docker는 애플리케이션과 그 종속성을 컨테이너라는 격리된 환경에 패키징하여 개발, 테스트, 배포 등의 과정에서 발생할 수 있는 환경 차이를 최소화한다. 이를 통해 개발 환경 구성을 간소화하고, 프로젝트의 일관성과 이식성을 높일 수 있다. 사전 설정Docker Desktop 다운https://www.docker.com/products/docker-desktop/ Download Docker Desktop | DockerDocker Desktop is available to download for free on Mac, Windows, or Linux operati..
큐(Queues)- 자료의 입력과 출력이 각각 한쪽 끝에서 이루어지는 자료 구조 = 'FIFO(First-In-First-Out) 구조'- 대표적인 선형 자료구조로, 삽입(insert)과 삭제(delete)를 수행- 큐는 보통 배열(array)이나 연결 리스트(linked list)로 구현- 큐에 데이터를 삽입하는 것을 '인큐(Enqueue)'- 큐에서 데이터를 꺼내는 것을 '디큐(Dequeue)'- 선입선출* 스택은 후입선출 1) 큐의 연산- Enqueue(item) : 큐의 끝(rear)에 item을 추가 O(1)- Dequeue() : 큐의 첫(front) 항목을 반환(큐에서 제거 O) O(n)- isEmpty() : 큐가 비어 있는지 검사 O(1)- peek() : 큐의 첫(front) 항목을 반..
연결리스트(Linked Lists)- 데이터의 논리적 순서를 유지하면서, 물리적인 저장 위치는 다를 수 있는 데이터 구조- 데이터의 추가, 삭제가 빈번한 상황에서 유용하게 사용된다.- 연결 리스트는 노드(Node)들의 연결로 구성되며, 각 노드는 데이터와 포인터(Pointer)로 구성된다.* 포인터는 다음 노드를 가리키는 포인터(next 포인터)와 이전 노드를 가리키는 포인터(prev 포인터)가 있다.* 데이터는 노드에 저장하는 값이다.- 이러한 구조 때문에 연결 리스트는 단방향 연결 리스트(Singly Linked List)와 양방향 연결 리스트(Doubly Linked List)로 구분된다. 단방향 연결 리스트(Singly Linked List)- 각 노드는 다음 노드를 가리키는 포인터(next 포인..
자료구조- 데이터를 효율적으로 조직화, 저장 및 관리하기 위한 방법을 제공예시) 배열(Array)은 데이터를 순차적으로 접근하기에 적합한 자료구조 알고리즘- 어떤 문제를 해결하기 위한 절차나 방법론- 주어진 문제의 해결을 위한 자료구조와 연산 방법에 대한 선택 자료구조와 알고리즘의 관계- 적절한 자료구조를 선택하면 문제를 해결하는 알고리즘의 성능을 향상 선형 배열(Linear Arrays)- 선형 배열(Linear Array)은 데이터를 일렬로 저장하는 자료구조- 일반적으로 인덱스를 사용하여 각 요소에 접근할 수 있고 Python에서는 리스트(List)라는 데이터형- 메모리 상에서 연속된 공간에 데이터를 저장하며, 데이터를 빠르게 접근 가능- 데이터를 순서대로 저장하며, 인덱스를 사용하기 때문에 원하는 ..
코딩 테스트에 대한 대비 방법1. 구현 능력 갖추기- 프로그래밍 언어 학습(Python, Java, C/C++)2. 자료구조 이해- Array, Stack/Queue, Hash/Map, Tree, Graph3. 기초 알고리즘 및 시간 / 공간 복잡도에 대한 이해- 시간 복잡도: 알고리즘이나 프로그램이 실행되는 동안 소요되는 시간의 양- 공간 복잡도: 알고리즘이나 프로그램이 실행되는 동안 소요되는 메모리 공간의 양* 시간 복잡도가 낮으면 공간 복잡도가 높아지고, 공간 복잡도가 낮으면 시간 복잡도가 높아진다.4. 현실 문제 해결을 위한 알고리즘 적용 훈련5. 제한 시간 내에 오류 없이 코드 작성 및 디버깅할 수 있는 능력 훈련 효율적 / 효과적1) 효과적으로 해결하는 것?2) 효율적으로 해결하는 것?- 효과..