분류 전체보기 18

[TDD] 테스트 주도 개발 - pytest

TDD - Test Driven Development. TDD를 처음 경험한 건 대학원을 졸업하고 취직한 첫 회사였다.10명이 넘는 인원이 하나의 소프트웨어 개발에 참여하고 있었다. 제대로 된 개별 경험도 없는 나에게는 이렇게 많은 인원이 팀웍으로 개발하는 소프트웨어는 버겁게 느껴졌다. 무수히 많은 모듈들 중 하나의 모듈 안에 함수 살짝 고치는 것도 머리털 빠지게 스트레스를 받았던 거 같다. 그런데 거기에 더해 그냥 개발 하는게 아닌 TDD를 하라는거다. (당시에 TDD를 처음 들어봤다.ㅎㅎ) 그냥 스크립트를 이해하기도 버거운데 모듈별로 따라오는 테스트 코드까지 보려 하니 스트레스를 정말 많이 받았던 기억이 있다. 당시 pytest로 test code를 짰기에 fixutre, mocking 등등 여러 설..

Team work 2024.10.01

Tumor cells, Tumor Microenvironment cells

암 연구에서 자주 다뤄지는 종양 세포(Tumor Cells)와 종양 미세환경(Tumor Microenvironment, TME) 세포에 대해 알아보겠습니다. 종양 세포 (Tumor Cells)암을 유발하는 세포, 빠르게 증식하고 불규칙적인 세포 분열을 일으킵니다. 종양 세포는 종양 내에서 주된 세포 집단을 형성하며, 유전적 변이와 관련된 특정 유전자들이 발현됩니다. 높은 증식 속도를 보이고, 종양 조직에서만 발견된다는 특징이 있습니다.    대표적인 종양세포들:   상피 종양 세포 (Epithelial Tumor Cells): 대장암, 유방암, 폐암과 같은 상피 조직에서 기원한 종양 세포.   간세포암 (Hepatocellular Carcinoma Cells): 간에서 발생하는 주요 종양 세포.   신경..

Bioinformatics 2024.09.28

[음성 데이터 처리] 샘플링 레이트란?

Sampling Rate샘플링 레이트(Sampling Rate)는 아날로그 신호(예: 음성, 음악)를 디지털 신호로 변환할 때, 초당 얼마나 많은 샘플을 추출할지를 나타내는 값입니다. 쉽게 말해, 샘플링 레이트는 소리 데이터를 얼마나 자주 측정해서 디지털 데이터로 변환하는지를 의미합니다.샘플링 레이트의 단위- 샘플링 레이트는 헤르츠(Hz)로 측정되며, 1초 동안의 샘플 수를 나타냅니다.  - 예를 들어, 16,000Hz(16kHz)는 1초 동안 16,000개의 샘플을 추출한다는 의미입니다.  - 44,100Hz(44.1kHz)는 일반적으로 오디오 CD에서 사용되는 표준 샘플링 레이트입니다.샘플링 레이트의 중요성높은 샘플링 레이트는 더 많은 세부 사항을 포착할 수 있어서 더 정밀한 음질을 제공하지만, 파일..

Deep learning 2024.09.07

Linear Algebra - 벡터 공간 (Vector space)

벡터 공간(vector space)는 벡터 객체들을 포함하는 집합과 두 가지 연산 (벡터 덧셈과 스칼라 곱셈)이 정의된 구조를 뜻합니다. 다음과 같은 공리들을 만족할 때 벡터 공간이라고 말할 수 있습니다.1. 백터 덧셈의 닫힘성(closure): 임의의 두 벡터 u,v가 벡터 공간에 속할 대, 이들의 합 u+v도 벡터 공간에 속한다.2. 벡터 덧셈의 결합 법칙: (u+v) + w = u + (v + w)3. 덧셈의 항등원: 벡터 공간에는 모든 벡터 v에 대해 v + 0 = v를 만족하는 영벡터 0가 존재한다.4. 덧셈의 역원: 모든 벡터 v에 대해 v + (-v) = 0를 만족하는 벡터 -v가 존재한다.5. 벡터 덧셈의 교환법칙: u + v = v + u6. 스칼라 곱셈의 닫힘성: 임의의 스칼라 a와 벡..

음악 생성 모델 - midi file 처리하기

취미로 반주를 하고 음악을 제작하는데 약간의 관심을 가지고 있습니다.음악 생성 딥러닝 모델이 쏟아지고 있는 가운데 저처럼 아직 midi file이 익숙치 않고, 음악을 생성하는 모델에 대한 관심이 많은 분들에게 도움이 되고자 제가 음악 생성 모델을 만들어보면서 학습한 내용에 대해 정리해보고자 합니다.우선 드럼 비트를 생성하는 모델을 만들어보고 있는데 그러려면 midi file에 대한 이해가 많이 필요하더군요.작업하며 정리한 내용에 대해 나누어보겠습니다. 1. MIDI 파일의 주요 속성  1. Note On/Off Events: 드럼 소리의 시작과 끝을 나타냅니다. • Note On: 특정 시점에 드럼이 연주되기 시작함을 의미. • Note Off: 특정 시점에 드럼이 연주되기를 멈춤을 의미. 2. Pit..

Deep learning 2024.05.26

PyTorch로 구현하는 Optimization

모델과 데이터를 준비한 후에는 데이터에 대해 모델을 훈련, 검증, 테스트하고 매개변수를 최적화하는 과정을 진행합니다. 모델 훈련은 반복적인 과정으로, 각 반복에서 모델은 출력에 대한 추측을 하고, 추측의 오류(손실)를 계산하며, 오류에 대한 매개변수의 도함수(기울기)를 수집한 후, 경사 하강법을 사용하여 이 매개변수들을 최적화합니다.필수 코드 로드이전 섹션에서의 Datasets & DataLoaders 및 모델 구축 코드를 불러와서 진행합니다.import torchfrom torch import nnfrom torch.utils.data import DataLoaderfrom torchvision import datasetsfrom torchvision.transforms import ToTensor# ..

Deep learning 2024.05.04

torch.autograd를 이용한 미분

신경망을 훈련할 때 가장 자주 사용되는 알고리즘은 역전파(back propagation)입니다. 이 알고리즘에서는 주어진 매개변수에 대해 손실함수의 기울기(gradient)에 따라 모델의 가중치(매개변수)가 조정됩니다.이러한 기울기를 계산하기 위해 PyTorch는 `torch.autograd`라는 내장 미분 엔진을 갖추고 있습니다. 이는 어떠한 계산 그래프에 대해서도 자동으로 기울기를 계산할 수 있는 기능을 지원합니다.간단한 신경망 예제다음은 입력 `x`, 매개변수 `w` 및 `b`, 그리고 어떤 손실 함수를 사용하는 가장 간단한 한 층의 신경망입니다. PyTorch에서는 다음과 같이 정의할 수 있습니다:import torch# 입력 텐서x = torch.ones(5) # 크기가 5인 텐서, 모든 요소..

Deep learning 2024.05.04

PyTorch를 사용한 신경망 구축

신경망은 데이터에 대한 연산을 수행하는 레이어 또는 모듈로 구성됩니다. PyTorch의 `torch.nn` 네임스페이스는 자신만의 신경망을 구축하는 데 필요한 모든 기본 요소를 제공합니다. PyTorch의 모든 모듈은 `nn.Module`을 상속받으며, 신경망 자체도 다른 모듈(레이어)로 구성된 모듈입니다. 이러한 중첩 구조는 복잡한 아키텍처를 쉽게 구축하고 관리할 수 있게 해줍니다. 하드웨어 가속기를 사용한 훈련 설정모델을 훈련할 때 가능하다면 GPU 또는 MPS(애플의 Metal Performance Shaders)와 같은 하드웨어 가속기를 사용하면 좋습니다. 이를 위해 PyTorch에서는 `torch.cuda`와 `torch.backends.mps`의 사용 가능 여부를 확인하여 적절한 디바이스를 선..

Deep learning 2024.05.04

PyTorch 기초 (데이터, 모델, 학습, 저장)

PyTorch를 사용한 기본적인 뉴럴 네트워크 구축 방법에 대해 알아보겠습니다. PyTorch는 사용자 친화적인 API와 강력한 기능으로 인해 머신 러닝 연구와 개발에 널리 사용되고 있습니다. PyTorch를 활용해서 모델을 구성하는 기본적인 구조를 설명하고자 합니다.  PyTorch는 데이터를 다루는 데 두 가지 기본 도구를 제공합니다: `torch.utils.data.DataLoader`와 `torch.utils.data.Dataset`. `Dataset`은 샘플과 그에 해당하는 레이블을 저장하며, `DataLoader`는 `Dataset` 주위에 반복 가능한 객체를 감싸 줍니다.PyTorch는 `TorchText`, `TorchVision`, `TorchAudio` 등 도메인 특화 라이브러리를 제공..

Deep learning 2024.05.03

인공지능 인터뷰 준비 - 실제 받았던 질문들

제가 인터뷰를 보면서 받았던 인공지능 관련 인터뷰 질문들을 정리했습니다. 아무쪼록 이 글이 인공지능 직무를 지원하는 분께 도움이 되길 바랍니다. 이 글은 또 인터뷰에서 질문을 받게 된다면 업데이트 하겠습니다. Batch로 나누어서 학습하는 이유? 메모리가 무한이라면 모든 데이터를 한 batch로 만들어서 학습하는게 좋은가? 메모리 제한 : 대량의 데이터를 한 번에 처리하는 것은 컴퓨터의 메모리에 심각한 부담을 주기 때문에 실제로 불가능할 수 있습니다. 그래서 데이터를 더 작은 배치로 분할하면, 각 배치에 대해 별도로 작업을 수행할 수 있게 되어 메모리 부하를 줄일 수 있습니다. 학습 속도 : 신경망을 학습시킬 때 각 배치에 대한 손실을 계산하고 가중치를 업데이트하는데, 이는 한 번에 전체 데이터셋에 대해..

Deep learning 2024.01.23