Super Kawaii Cute Cat Kaoani '분류 전체보기' 카테고리의 글 목록
728x90

분류 전체보기 160

모델의 경량화 방법

사실 나는 아직까지 연구에서만 딥러닝을 사용하다보니 모델의 경량화 경험이 없다. 하지만 현업에서 사용하는 로봇, 자율자동차, 스마트폰과 같은 모바일 환경에서는 하드웨어 성능이 제한적인 상황이 많다. 이때문에 모델 경량화를 무조건 고려해야하니,,,,당장 쓸 일이 없더라도 개념을 알아보도록 하자 경량화 방법모델을 경량화 하는 방법은 크게 2가지로 나눌 수 있다. 1) 학습된 모델의 크기를 줄이는 방법2) 네트워크 구조 자체를 효율적으로 설계하는 방법-> 2)의 경우 모델의 구조를 단순화하거나 효율적으로 설계하여 파라미터 수와 연산량을 줄이는 방법으로 중요 아이디어는 불필요한 연산을 줄이고 중요한 피처만 효율적으로 학습할 수 있는 구조로 설계하여 모델의 크기와 계산 복잡도를 최소화하는 것이다. 여기서는 1) ..

Transformer 개념 완전 정리, 각 Attention의 차이점

최근에 면접을 보면서 모델 관련 지식들을 질문 받았었는데 완전 잘못 말했다....구조도 제대로 파악못하고 썼구나 싶어서 반성이 많이 된 경험이였다. 특히 Transformer의 경우 내가 굉장히 많이 써온 모델인데 구조를 파악 못하고 있다는게...ㅎ공부해보자...Transformer란?Transformer는 입력 시퀀스를 병렬로 처리하여 각 단어가 문맥 내 다른 단어들과의 관계를 학습하고, 이를 기반으로 출력을 생성하는 모델로, Attnetion 메커니즘을 활용해 복잡한 의존성을 효율적으로 캡처하여 다양한 시퀀스 작업에 활용되는 신경망 구조이다. Attention 메커니즘이란?Transformer를 제안한 논문의 이름이 "Attention is All you need"인 만큼 Attention에 대한 이..

[Python] 딕셔너리 key 추가, key 있는지 확인, key값만 불러오기, 정렬

파이썬 딕셔너리는 사용법만 익히면 굉장히 편리하다. 딕셔너리에 key를 추가하고,딕셔너리에 특정 key가 있는지 확인하고, 딕셔너리의 key값들만 불러오고, 딕셔너리를 value값을 기준으로 정렬하는 방법을 알아보자 1. 딕셔너리에 key추가하는 방법my_dict = {}my_dict['apple'] = 3print(my_dict) # {'apple': 3}이런식으로 새로운 key값에 대해 값을 지정해주면 딕셔너리에 key:value쌍을 추가할 수 있다. 2. 특정 key가 딕셔너리에 있는지 확인하는 방법if 'apple' in my_dict: print('Key exists!')else: print('Key does not exist.')key in dict 과 같이 in을 통해 쉽게 확인..

연구/Python 2025.04.02

Latent Diffusion 이해 + 코드 짜보기

개념 이해하기Latent Diffusion은 기존 Diffusion Model의 연산 부담을 줄이기 위해 나온 모델이다. 기존 diffusion model은 고해상도 이미지 공간에서 직접 노이즈를 제거해야하다보니 계산량이 너무 많았다. latent diffusion은 이에 주목하여 이미지를 먼저 autoencoder를 통해 압축된 latent space로 옮겨서 latent 공간에서 diffusion을 수행한 뒤 마지막에 다시 이미지를 복원한다. u net이 노이즈 제거시에 latent값과 추가조건(ex: text embedding)을 함게 고려하면서 노이즈를 제거할 수 있기 때문에 conditioning이 가능하다 코드 뜯어보기사전 학습된 Stable Diffusion 모델이 돌아가도록 하는 코드를 통..

딥러닝 면접 기초 개념

1. 딥러닝 개념 및 기본 이론(1) 딥러닝이란 무엇인가?딥러닝은 인공 신경망(Artificial Neural Networks, ANN)을 기반으로 한 머신러닝의 한 분야이다. 여러 층(layer)로 이루어진 신경망을 사용하여 복잡한 데이터에서 패턴을 학습하고 추출할 수 있다. 대표적인 딥러닝 모델로는 합성곱 신경망(CNN), 순환 신경망(RNN), 변환자(Transformer) 등이 있다. (2) 딥러닝과 머신러닝의 차이점은 무엇인가?머신러닝: 컴퓨터가 데이터를 기반으로 학습하여 패턴을 인식하고 예측하는 기술. 주로 특징(feature)을 사람이 직접 설계해야 함.딥러닝: 딥러닝은 머신러닝의 한 분야로, 인공 신경망을 이용하여 데이터에서 자동으로 특징을 추출하는 능력을 갖춤. 따라서 딥러닝은 보다 복잡..

[Python] 파이썬 리스트 전치 시키기

numpy 같은 외부 라이브러리를 사용하지 않고 파이썬에서 2차원 list를 전치시키는 방법이다. graph = [list(map(int, input().split())) for _ in range(N)]transposed_graph = [list(row) for row in zip(*graph)]graph를 전치시킨 transpose_graph를 생성하는 과정이다. 동작과정을 살펴보면 다음과 같다. 1. *graph는 graph의 각 행을 개별 리스트로 풀어준다. 즉 [matirx[0], matrix[1], matrix[2]]...를matrix[0], matrix[1], matrix[2]...로 풀어준다 2. zip()은 동일 인덱스 요소를 묶어서 튜플로 변환해준다. 즉, zip([1, 2, 3], [..

연구/Python 2025.03.16

[Python] 파이썬 입력받기

파이썬에서 입력을 받는 방법이다. 50 0 1 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 060 0 0 0 0 00 1 0 0 0 00 0 0 0 0 00 0 0 0 0 00 0 0 0 0 00 0 0 0 0 0 이런식으로 n, nxn의 입력이 들어올 때 파이썬에서는 다음과 같이 입력을 받을 수 있다. n = int(input())먼저 input()으로 받으면 string 형태로 들어오게 되므로 int로 형변환을 해주어야한다. 그리고 nxn의 입력을 받아받아 [[0, 0, 1, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]과 같이 저장해주어야하는데 방식이 조금 어색했다. graph = [lis..

연구/Python 2025.03.10

OBS Studio를 사용하여 동영상 format 변경하기

OBS studio를 사용하면 동영상 녹화뿐만 아니라 녹화된 영상의 format을 동영상 품질 저하 없이 변경할 수 있다. 녹화된 영상의 format을 변경하는 방법은 아래와 같다.  1. 좌측 상단의 파일 클릭 > 녹화본 Remux 클릭 (버전에 따라 녹화본 Remux가 아닌 녹화된 파일 재다중화라고 뜨는 경우도 있는 것 같다.) 2. OBS 녹화본 선택 > Remux 버튼 클릭OBS 녹화본을 선택한다. 한번에 여러개 선택하는 것도 가능하며 대상파일이 자동으로 아래의 사진과 같이 설정이 된다. 만약 mp4 파일이 아닌 다른 format이나 저장경로를 변경하고 싶으면 더블클릭하여 대상파일의 경로 및 format을 수정하면 된다. Remux 버튼을 크릭하면 대상파일의 경로에 format이 변경된 파일이 잘..

기타 2024.12.05

다익스트라 알고리즘(Dijkstra Algorithm)

다익스트라 알고리즘은 음의 가중치가 없는 그래프에서, 한 vertex에서 모든 vertex들까지의(one-to-all) 최단거리를 구하는 알고리즘이다.그럼 알고리즘의 내용을 살펴보자. 설명에서d[N]:  출발 vertex -> N 까지 계산된 최단거리S: 방문한 노드들의 집합Q: 방문하지 않은 노드들의 집합를 의미한다.아래와 같은 네트워크에서 A->F까지의 최단 거리 계산을 목표로 하는 상황이라고 가정하자.1. 다익스트라 알고리즘은 아직 확인되지 않은 거리를 모두 무한(infinity)로 설정한다.최단거리 update출발지로부터 출발지까지의 거리는 무조건 0이기 때문에 d[A] = 0으로 설정한다.d[나머지 node]= infinity로 설정이되어있는데 실제로 무한이라는 의미는 아니고, 아직 확인되지 않..

수업정리 2024.10.03

SVM(State-Vector Machine)이란?

SVM은 지도 학습 알고리즘으로, 주로 분류(classification) 문제에 사용됩니다. SVM은 기존의 분류방법들과 기본원리가 크게 다르다.신경망을 포함하여 기존의 방법들은 분류 '오류율을 최소화'하려는 목적으로 설계되었다.하지만 SVM은 한 발짝 더 나아가 두 부류 사이에 존재하는 '여백을 최대화'하려는 목적으로 설계되었다.좀 더 구체적으로 SVM에 대해 알아보자. SVM의 목표는분류 문제에서 데이터를 최대한 분리하는 최적의 초평면(hyperplane)을 찾는 것이다.이 초평면은 두 개의 클래스 사이의 마진을 최대화하는 것을 목표로 한다.마진은, 초평면과 가장 가까운 데이터 포인트(서포트 벡터) 간의 거리를 의미한다.SVM은 기본적으로 선형 분류 문제에 사용되지만, 커널 트릭(kernel tric..

728x90
728x90