View

내일배움캠프 본캠프 47일차

수현조 2025. 2. 5. 21:16

파이토치(PyTorch)는 주로 딥러닝(Deep Learning) 모델을 만들고 훈련하는 데 사용하는 프레임워크야.

네 연구(뉴로모픽, 메모리 소자)와도 관련이 있을 수 있어, 특히 머신러닝 기반 분석을 할 경우 도움이 될 거야.


PyTorch 어디에 쓰는지 정리

1️⃣ 딥러닝(Deep Learning) 모델 구현

  • 컴퓨터 비전 (CV, Computer Vision): 이미지 인식, 객체 탐지, 스타일 변환 등
  • 자연어 처리 (NLP, Natural Language Processing): 챗봇, 번역, 감성 분석 등
  • 시계열 분석(Time Series Analysis): 주가 예측, 센서 데이터 분석
  • 강화학습(Reinforcement Learning): 자율주행, 게임 AI

2️⃣ 과학/공학 분야 연구

  • 뉴로모픽 컴퓨팅(Neuromorphic Computing): 스파이킹 뉴런 네트워크(SNN) 모델링
  • 소재 연구(Material Science): 머신러닝 기반 신소재 설계, 데이터 분석
  • 바이오/의료 데이터 분석: 유전자 데이터 분석, 단백질 구조 예측
  • 물리 시뮬레이션: 미분 방정식 기반 모델링

3️⃣ 머신러닝/AI 기반 자동화

  • 추천 시스템 (Recommendation Systems)
  • 자율주행 (Self-Driving Cars)
  • AI 음악/그림 생성 (AI Art & Music)

PyTorch 주요 특징

  1. Numpy처럼 동작하면서 GPU 연산이 가능함
    • torch.Tensor를 사용하면 넘파이처럼 데이터를 다룰 수 있음
    • cuda()를 붙이면 GPU에서 빠르게 연산 가능 (tensor.cuda())
  2. 동적 연산 그래프 (Dynamic Computation Graph)
    • 딥러닝 모델을 실행하면서 연산 그래프를 동적으로 생성함
    • 텐서플로우(TensorFlow)보다 디버깅과 수정이 쉬움
  3. 신경망 쉽게 구축 가능 (torch.nn)
    • CNN, RNN, Transformer 같은 모델을 쉽게 정의할 수 있음
  4. 자동 미분 기능 (Autograd)
    • requires_grad=True 설정하면 자동으로 미분 계산
    • 역전파(Backpropagation) 자동 수행
  5. ONNX, TensorRT 변환 가능
    • PyTorch 모델을 ONNX로 변환하면 TensorFlow에서도 사용 가능

PyTorch 기본 코드 예제

import torch

# 텐서 생성 (넘파이처럼 사용 가능)
x = torch.tensor([[1, 2], [3, 4]], dtype=torch.float32)
print(x)

# GPU 연산 (CUDA 사용 가능)
device = "cuda" if torch.cuda.is_available() else "cpu"
x = x.to(device)
print(x)

# 자동 미분 (Autograd)
x = torch.randn(3, requires_grad=True)  # 미분 가능 텐서
y = x * 2
z = y.mean()
z.backward()  # 역전파 실행
print(x.grad)  # x에 대한 미분값 출력

 


기본적인 타입 변환

1️⃣ 숫자 ↔ 문자열

# 정수 → 문자열
num = 123
str_num = str(num)  # "123"

# 문자열 → 정수
num2 = int("456")  # 456

# 문자열 → 실수
float_num = float("3.14")  # 3.14

2️⃣ 리스트 ↔ 튜플 ↔ 세트

# 리스트 → 튜플
lst = [1, 2, 3]
tpl = tuple(lst)  # (1, 2, 3)

# 튜플 → 리스트
tpl2 = (4, 5, 6)
lst2 = list(tpl2)  # [4, 5, 6]

# 리스트 → 세트 (중복 제거됨)
set1 = set([1, 2, 2, 3])  # {1, 2, 3}

# 세트 → 리스트
lst3 = list(set1)  # [1, 2, 3]

3️⃣ 딕셔너리 변환

# 키, 값만 리스트로 변환
dic = {'a': 1, 'b': 2, 'c': 3}

keys = list(dic.keys())    # ['a', 'b', 'c']
values = list(dic.values())  # [1, 2, 3]
items = list(dic.items())    # [('a', 1), ('b', 2), ('c', 3)]

4️⃣ Numpy ↔ PyTorch 변환

🔹 Numpy → PyTorch Tensor

import numpy as np
import torch

arr = np.array([1, 2, 3])
tensor = torch.tensor(arr)  # Numpy 배열 → PyTorch 텐서

🔹 PyTorch Tensor → Numpy

arr2 = tensor.numpy()  # PyTorch 텐서 → Numpy 배열

5️⃣ JSON ↔ Python 딕셔너리 변환

import json

# Python 딕셔너리 → JSON 문자열
data = {"name": "Alice", "age": 25}
json_str = json.dumps(data)  # '{"name": "Alice", "age": 25}'

# JSON 문자열 → Python 딕셔너리
data2 = json.loads(json_str)  # {'name': 'Alice', 'age': 25}

6️⃣ Pandas 변환

🔹 DataFrame ↔ 리스트/딕셔너리

import pandas as pd

# 리스트 → DataFrame
data = [[1, 'Alice'], [2, 'Bob']]
df = pd.DataFrame(data, columns=['ID', 'Name'])

# DataFrame → 리스트
list_data = df.values.tolist()  # [[1, 'Alice'], [2, 'Bob']]

# DataFrame → 딕셔너리
dict_data = df.to_dict()  # {'ID': {0: 1, 1: 2}, 'Name': {0: 'Alice', 1: 'Bob'}}

 

Share Link
reply
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28