All59 [LeetCode] 3123. Find Edges in Shortest Paths (Python) 안녕하세요!오늘은 leetcode 3123번 Find Edges in Shortest paths 문제를 풀어보겠습니다. 0~n-1 로 넘버링되어있는 n개의 노드를 가진 그래프가 있습니다. 이 그래프는 2d 배열인 'edges'로 대표되는 m edges로 이루어져 있는데요, edges[i] = [ai, bi, wi] 로 표현될 수 있고, 이는 노드 ai, bi간의 가중치 wi를 의미합니다. 0에서 n-1 노드 까지의 모든 최단 경로 중에서, edges[i] 가 포함되면 True, 그렇지 않으면 False를 출력하는 함수를 작성하는 문제입니다. 모든 결과를 'answer' 배열에 저장하고 출력해주면 됩니다. 이 문제도 이전 시간에 풀었던 문제와 마찬가지로 Dijkstra 알고리즘을 활용해서 문제를 풀어보겠습.. 2024. 11. 17. [LeetCode] 743. Network Delay Time (Python) 안녕하세요!오늘은 Leet Code 743. Network Delay Time 문제를 풀어보겠습니다. 1~n 으로 라벨링 되어있는 n 개의 노드가 있습니다. times 라는 배열도 있는데, times[i] = (ui, vi, wi) 에서 ui는 source node, vi는 target node, wi는 source에서 target으로 신호를 보내는 데 걸리는 시간을 의미합니다. k라는 노드에서 신호를 보낼 때, 모든 n 노드가 신호를 받는 데 걸리는 최소 시간을 출력하는 함수를 만드는 문제입니다. 이때 모든 노드가 신호를 받는 것이 불가하다면 -1을 출력해주면 됩니다. 저는 Dijkstra 알고리즘으로 문제를 풀어보려고 합니다.다익스트라 알고리즘은 음의 가중치가 없는 그래프에서, 가중치 그래프의 한 노.. 2024. 11. 16. [Deep Learning] DETR 모델 이해하고 실습하기 (3) 안녕하세요!!지난 포스팅까지 DETR 모델을 활용해서 이미지 상 객체의 클래스와 바운딩 박스를 예측해보았는데요오늘은 예측 과정에서 모델이 이미지의 어떤 부분에 집중(attention)을 했는지, attention weights를 시각화해보는 실습을 해보겠습니다. 이전 게시글을 참고해주세요https://jun-eon.tistory.com/entry/Deep-Learning-DETR-%EB%AA%A8%EB%8D%B8-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B3%A0-%EC%8B%A4%EC%8A%B5%ED%95%98%EA%B8%B0-1 [Deep Learning] DETR 모델 이해하고 실습하기 (2)안녕하세요!지난 실습에서는 pytorch로 DETR 모델을 구현해보았습니다. 이번에는 이 모델.. 2024. 11. 15. [Deep Learning] DETR 모델 이해하고 실습하기 (2) 안녕하세요!지난 실습에서는 pytorch로 DETR 모델을 구현해보았습니다. 이번에는 이 모델에 제가 찍은 사진을 입력해서 객체 탐지를 해보겠습니다. 구현한 모델은 지난 실습 포스팅을 참고해주세요!https://jun-eon.tistory.com/entry/%EB%94%A5%EB%9F%AC%EB%8B%9DDETR-%EB%AA%A8%EB%8D%B8-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B3%A0-%EC%8B%A4%EC%8A%B5%ED%95%98%EA%B8%B0 [Deep Learning] DETR 모델 이해하고 실습하기 (1)오늘은 객체 탐지를 위해 Transformer를 활용하는 모델인 DETR (End-to-End Object Detection with Transformers, DEt.. 2024. 11. 14. [Deep Learning] DETR 모델 이해하고 실습하기 (1) 오늘은 객체 탐지를 위해 Transformer를 활용하는 모델인 DETR (End-to-End Object Detection with Transformers, DEtection TRansformer)모델을 알아보고 실습해보려고 합니다. DETR은 기존에 자연어처리 분야에서 많이 쓰이던 Transformer가 객체 탐지에도 활용될 수 있다는 가능성을 열어준 모델로, self-attention을 통해 이미지 내 객체 간 관계를 효과적으로 학습하고, 복잡한 후처리 과정 없이 한 번에 객체 탐지와 분류를 수행할 수 있는 end-to-end 모델입니다. from torch import nnclass DETR(nn.Module): def __init__(self, num_classes, hidden_dim=2.. 2024. 11. 13. [LeetCode] 210. Course Schedule II (Python) 안녕하세요~~ 오늘은 리트코드 210. Course Schedule 2 문제를 풀어보겠습니다. 0부터 numCourses-1 로 label되어 있는 총 numCourses 개의 강의를 들어야하는데, 선수과목이 존재합니다. 주어진 prerequisites 배열에서 prerequisites[i] = [ai, bi] 는 ai라는 과목을 듣기 위해서는 bi가 선수강되어야한다는 것을 의미합니다. 모든 Courses를 수강하기 위한 수강 순서를 출력하면 됩니다. 이 때, 여러 개의 답 중 유효한 답을 하나 출력하면 되고, 만약 답이 존재하지 않는다면 빈 array를 출력하면 됩니다. 저는 DFS를 활용한 위상 정렬을 통해 문제를 풀어보겠습니다. 먼저 각 코스 별 후행 코스를 딕셔너리 형태로 만들어줍니다. 이후 방문.. 2024. 11. 6. [LeetCode] 104. Maximum Depth of Binary Tree (Python) 안녕하세요 오늘은 리트코드 104번 Maximum Depth of Binary Tree 문제를 풀어보겠습니다. 이진 트리의 루트 배열이 주어졌을 때, 그것의 Maximum depth를 출력하는 함수를 정의하는 문제였습니다. 여기서 Maximum depth는 루트 노드에서 가장 멀리 있는 leaf 노드 까지의 거리입니다. 이 문제도 이전에 풀었던 94번 문제와 같이 두 가지 방법으로 풀 수 있습니다. BFS를 이용해서 푸는 방식, 재귀를 이용해서 푸는 방식이 있는데 차례대로 풀어보겠습니다. 풀이 1. BFS를 구현하기 위해서는 queue 구조를 사용해야합니다. 큐에 각 레벨의 노드들을 추가하고 한 레벨씩 탐색이 끝날 때마다 깊이를 증가시킵니다. 큐가 비게 될 때가지 반복한 후 그동안 증가된 깊이가 트리.. 2024. 10. 14. [LeetCode] 94. Binary Tree Inorder Traversal 안녕하세요 오늘은 리트코드 94번 Binary Tree Inorder Traversal 문제를 풀어보겠습니다. 주어진 바이너리 트리의 배열을 Inorder 로 출력하는 문제 입니다. Inorder Traversal은 이진 트리를 탐색하는 방법 중 하나로, 왼쪽 자식 노드 > 루트 노드 > 오른쪽 자식 노드 순으로 탐색하는 방법 입니다. 이후에 이진 트리와 다른 탐색 방법에 대해서도 정리해보겠습니다. 해당 문제는 재귀를 사용하여 푸는 방법과 스택을 사용하여 푸는 방법이 있습니다. 먼저 스택을 사용하여 풀어보겠습니다. 풀이 1.스택(stack)은 Last in First out (LIFO) 구조를 가지는 자료구조로, 마지막에 들어간 요소가 가장 먼저 나오는 방식입니다. 스택을 이용하면 재귀적으로 함수를 .. 2024. 10. 13. [ML] 가우시안 혼합 모델(Gaussian Mixture Models)을 이용한 분류 실험 (1) 오늘은 가우시안 혼합 모델(GMM)을 사용해서 분류 문제를 해결하는 실습을 해보도록 하겠습니다. 오늘 실습에서 활용할 주요 개념들에 대해 먼저 정리해보겠습니다. * 개념 정리1. 가우시안 분포 (Gaussian Distribution)가우시안 분포는 정규 분포를 뜻합니다. 평균(μ)과 분산(σ²)에 의해 정의되는 종 모양의 분포입니다.1차원에서는 평균을 기준으로 좌우로 퍼지는 형태이지만, 다차원에서는 특정 중심을 기준으로 타원형으로 퍼지는 모양입니다. 2. 가우시안 혼합 모델 (Gaussian Mixture Models, GMM)여러 가우시안 분포를 혼합하여 복잡한 분포를 근사시키기 위한 머신러닝 알고리즘. 다음과 같이 수학적으로 정의할 수 있습니다. P(x)=∑k=1Kπk⋅N(x∣μk,Σk) 여.. 2024. 10. 12. [DeepLearning] Dive into Deep Learning 필사 7. Convolutional Neural Networks (CNN) (8.6. Residual Networks (ResNet) and ResNeXt) 8.6. Residual Networks (ResNet) and ResNeXt신경망의 성능을 높이기 위해 네트워크를 깊게 만드려는 시도가 많았지만, 네트워크가 너무 깊어지면 오히려 성능이 떨어지는 기울기 소실 또는 기울기 폭발 문제가 발생. 이를 해결하기 위해 residual learning을 도입한 ResNet 등장 * ResNet (Residual Networks)목표: 매우 깊은 신경망에서 발생하는 기울기 소실(vanishing gradient) 문제를 해결하는 것핵심 개념: 잔차 블록 (Residual Block)ResNet의 잔차 블록은 입력을 변화하는 대신, 입력과 변환값을 더하는 방식 사용. 이 때문에 네트워크가 더 깊어지더라도 성능 저하 없이 학습 가능 import torchfrom tor.. 2024. 10. 11. [DeepLearning] Dive into Deep Learning 필사 7. Convolutional Neural Networks (CNN) (8.2. Networks Using Blocks (VGG)) 8.2. Networks Using Blocks (VGG)* VGG (Very Deep Convolutional Networks)특징 - 심플한 네트워크 구조: 필터의 크기는 모두 3*3으로 고정되어 있으며, 모든 합성곱 계층의 stride는 1, padding는 1 - 깊은 네트워크 - 작은 필터 사용: VGG는 3*3의 작은 합성곱 필터를 반복적으로 쌓아 사용. 작은 필터를 여러 번 사용하는 대신, 큰 필터를 한 번 사용하는 것보다 더 좋은 성능을 보임. - Pooling 계층: 일정한 간격으로 Max pooling을 사용하여 이지 크기를 축소 - Fully Connected layer: 마지막에는 여러 개의 Fully connected 계층을 통해 최종 출력을 생성 - Dropout: 일부 뉴런을 .. 2024. 10. 10. [DeepLearning] Dive into Deep Learning 필사 7. Convolutional Neural Networks (CNN) (7.6. Convolutional Neural Networks (LeNet)) 7.6. Convolutional Neural Networks (LeNet)* LeNetLeNet은 Convolution과 pooling 층을 교대로 사용하여 입력 이미지에서 특징을 추출하고, 마지막에 fully connected layr를 사용하여 최종적으로 클래스를 분류하는 딥러닝 모델 import torchfrom torch import nnfrom d2l import torch as d2l 7.6.1. LeNetdef init_cnn(module): #@save """Initialize weights for CNNs.""" if type(module) == nn.Linear or type(module) == nn.Conv2d: nn.init.xavier_uniform_(m.. 2024. 10. 9. 이전 1 2 3 4 5 다음