Study/Today_I_Learned
-
1. 구조와 용도 방대한 데이터를 고정된 길이로 변환하는 기능을 말합니다. 키key에 데이터data를 저장하는 데이터 구조이며, 키를 통해 데이터를 바로 받아올 수 있어 획기적으로 속도가 빠른 자료구조입니다. 파이썬에서는 dictionary type과 방식이 같으므로 별도의 구현 없이 딕셔너리를 사용하면 됩니다. 검색이 많이 필요한 경우, 저장과 삭제 및 읽기가 빈번한 경우, 웹 프로그래밍 시 캐쉬의 구현(중복 확인)이 필요한 경우에 사용합니다. 2. 용어 Hash 해쉬: 임의의 값을 고정 길이로 변환하는 것 Hash table 해쉬 테이블: 키 값의 연산에 의해 직접 접근이 가능한 데이터구조 Hashing Function 해싱 함수: 키에 대해 산술연산을 이용해 데이터 위치를 찾을 수 있는 함수 혹은 ..
[자료구조] 해쉬 테이블 (Hash table)1. 구조와 용도 방대한 데이터를 고정된 길이로 변환하는 기능을 말합니다. 키key에 데이터data를 저장하는 데이터 구조이며, 키를 통해 데이터를 바로 받아올 수 있어 획기적으로 속도가 빠른 자료구조입니다. 파이썬에서는 dictionary type과 방식이 같으므로 별도의 구현 없이 딕셔너리를 사용하면 됩니다. 검색이 많이 필요한 경우, 저장과 삭제 및 읽기가 빈번한 경우, 웹 프로그래밍 시 캐쉬의 구현(중복 확인)이 필요한 경우에 사용합니다. 2. 용어 Hash 해쉬: 임의의 값을 고정 길이로 변환하는 것 Hash table 해쉬 테이블: 키 값의 연산에 의해 직접 접근이 가능한 데이터구조 Hashing Function 해싱 함수: 키에 대해 산술연산을 이용해 데이터 위치를 찾을 수 있는 함수 혹은 ..
2022.07.19 -
tf.keras 를 활용해 1.x에서 사용했던 데이터셋인 MNIST를 사용하여 같은 classification이지만 훨씬 간단하게 구현할 수 있었습니다. 특히 사용자가 일일이 tf.Session() 을 통해 실행 후 종료시켜줘야했던 것과 달리 2.x에서는 간단하게 실행한 후 신경쓰지 않아도 됩니다. keras에서 구현할 수 있는 모델에는 두 가지 종류가 있습니다. sequential : 레이어를 순차적으로 구현할 수 있어 이해하기에 직관적이고 따라서 에러가 적습니다. functional : 함수형 API에서는 레이어가 중간에 두 개로 갈라진다거나 하는 등 모델이 복잡할 때 활용할 수 있습니다. 복습 코드 링크 1. 데이터 전처리 - keras에서 datasets에서 불러올 수 있는 MNIST set을 각..
[딥러닝] Tensorflow 2.x 실습tf.keras 를 활용해 1.x에서 사용했던 데이터셋인 MNIST를 사용하여 같은 classification이지만 훨씬 간단하게 구현할 수 있었습니다. 특히 사용자가 일일이 tf.Session() 을 통해 실행 후 종료시켜줘야했던 것과 달리 2.x에서는 간단하게 실행한 후 신경쓰지 않아도 됩니다. keras에서 구현할 수 있는 모델에는 두 가지 종류가 있습니다. sequential : 레이어를 순차적으로 구현할 수 있어 이해하기에 직관적이고 따라서 에러가 적습니다. functional : 함수형 API에서는 레이어가 중간에 두 개로 갈라진다거나 하는 등 모델이 복잡할 때 활용할 수 있습니다. 복습 코드 링크 1. 데이터 전처리 - keras에서 datasets에서 불러올 수 있는 MNIST set을 각..
2022.07.16 -
강의 복습+새로운 CV 수업진도+ 스터디까지 눈코 뜰새 없지만 놓칠 수 없는 자료구조 공부입니다.. 배열 포스팅을 간단하게 넘어간 느낌이 없지 않아서 링크드리스트는 열심히 해보는걸로..^^🔥 배열: 미리 연결된 공간을 예약해놓고 쓰는 구조 링크드리스트: 미리 예약할 필요 없이, 필요할 때마다 추가가 가능 위와 같이, 링크드리스트는 배열의 단점을 극복한 자료구조 입니다. 1. 구조와 용어 ▶ 노드: 데이터의 저장 단위, 데이터 + 포인터(다음 데이터를 가리키는 주소)로 구성 ▶ 포인터: 각 노드 안에서 다음이나 이전의 노드와의 연결 정보를 가지고 있는 공간 그림과 같이 링크드리스트의 특징은 데이터의 끝에서 다음 데이터를 가리키는 포인터가 존재한다는 점입니다. 이를 가지고 있기 때문에 구조의 확장이 자유롭게..
[자료구조] LinkedList 링크드리스트강의 복습+새로운 CV 수업진도+ 스터디까지 눈코 뜰새 없지만 놓칠 수 없는 자료구조 공부입니다.. 배열 포스팅을 간단하게 넘어간 느낌이 없지 않아서 링크드리스트는 열심히 해보는걸로..^^🔥 배열: 미리 연결된 공간을 예약해놓고 쓰는 구조 링크드리스트: 미리 예약할 필요 없이, 필요할 때마다 추가가 가능 위와 같이, 링크드리스트는 배열의 단점을 극복한 자료구조 입니다. 1. 구조와 용어 ▶ 노드: 데이터의 저장 단위, 데이터 + 포인터(다음 데이터를 가리키는 주소)로 구성 ▶ 포인터: 각 노드 안에서 다음이나 이전의 노드와의 연결 정보를 가지고 있는 공간 그림과 같이 링크드리스트의 특징은 데이터의 끝에서 다음 데이터를 가리키는 포인터가 존재한다는 점입니다. 이를 가지고 있기 때문에 구조의 확장이 자유롭게..
2022.07.13 -
in Python: list, tuple 배열은 같은 종류의 데이터를 효율적으로 관리하기 위해 사용하는 기본적인 자료구조입니다. 데이터들을 연결된 공간에 저장하되, 순서를 유지한 채 저장됩니다. 장점 ▶인덱스를 통해 빠른 접근 가능 단점 ▶배열의 사이즈를 미리 설정해주어야 함 = 연관된 데이터의 추가가 어렵다 ▶데이터를 추가 혹은 삭제가 쉽지 않다 강의 내용 자체가 길지 않아서 이어드림스쿨 4월에 배웠던 list 기초 수업내용 추가해보겠습니다. ar1 = [10,20,30,40,50] ar2 = [80] #list 끝에 값 추가 - append ar.append(60) #특정 위치에 값 추가 - insert, 0번 위치에 5를 삽입 ar.insert(0,5) #리스트 간 덧셈 (연결)이 가능하다 ar1 ..
[자료구조] 배열 (array)in Python: list, tuple 배열은 같은 종류의 데이터를 효율적으로 관리하기 위해 사용하는 기본적인 자료구조입니다. 데이터들을 연결된 공간에 저장하되, 순서를 유지한 채 저장됩니다. 장점 ▶인덱스를 통해 빠른 접근 가능 단점 ▶배열의 사이즈를 미리 설정해주어야 함 = 연관된 데이터의 추가가 어렵다 ▶데이터를 추가 혹은 삭제가 쉽지 않다 강의 내용 자체가 길지 않아서 이어드림스쿨 4월에 배웠던 list 기초 수업내용 추가해보겠습니다. ar1 = [10,20,30,40,50] ar2 = [80] #list 끝에 값 추가 - append ar.append(60) #특정 위치에 값 추가 - insert, 0번 위치에 5를 삽입 ar.insert(0,5) #리스트 간 덧셈 (연결)이 가능하다 ar1 ..
2022.07.13 -
복잡하고 까다로웠던 Tensorflow 1.x버전에 비해 2.x는 구현이 많이 쉬워졌다고 합니다. 변수 초기화, 파라미터의 차원 설정하기 등 코드가 많이 간결해졌다고 하는데요, 하지만 그 간결해진 코드 내에서 tensorflow가 어떻게 작동하는지 공부하기 위해 1.x로 실습한 내용입니다. 수업시간에 사용했던 data set은 손글씨 classification 이고, 전체 수업내용 코드는 github에 올려두었습니다. (link) 전체적인 코드의 흐름은 전처리(data normalization, target value(label)의 one-hot encoding), 모델 학습 및 테스트였습니다. 1.x 에서는 파라미터 초기화 코드 및 tf.Session(), epoch input 횟수를 직접 구현 및 실..
[딥러닝] Tensorflow 1.x 를 이용한 신경망 구성해보기복잡하고 까다로웠던 Tensorflow 1.x버전에 비해 2.x는 구현이 많이 쉬워졌다고 합니다. 변수 초기화, 파라미터의 차원 설정하기 등 코드가 많이 간결해졌다고 하는데요, 하지만 그 간결해진 코드 내에서 tensorflow가 어떻게 작동하는지 공부하기 위해 1.x로 실습한 내용입니다. 수업시간에 사용했던 data set은 손글씨 classification 이고, 전체 수업내용 코드는 github에 올려두었습니다. (link) 전체적인 코드의 흐름은 전처리(data normalization, target value(label)의 one-hot encoding), 모델 학습 및 테스트였습니다. 1.x 에서는 파라미터 초기화 코드 및 tf.Session(), epoch input 횟수를 직접 구현 및 실..
2022.07.12 -
스택 구조는 데이터를 제한적으로 접근할 수 있는 구조, 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조라는 점에서 큐와 유사하지만 가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조라는 점에서 반대입니다. ctrl+z를 통해 바로 이전의 행동을 취소하는 것과 비슷합니다. 앞의 포스팅에서 언급한 것과 마찬가지로 LIFO (last-in, first-out) 데이터 관리 방식을 따릅니다. (혹은 FILO, first-in, last-out) 활용 ▶ 컴퓨터 내부의 프로세스 구조의 함수 동작 방식 → 프로그램 안의 다양한 함수들이 동작하는 방식에 쓰이는 자료구조 #재귀함수로 이해해보기 def recursive(num): if num
[자료구조] Stack 스택스택 구조는 데이터를 제한적으로 접근할 수 있는 구조, 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조라는 점에서 큐와 유사하지만 가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조라는 점에서 반대입니다. ctrl+z를 통해 바로 이전의 행동을 취소하는 것과 비슷합니다. 앞의 포스팅에서 언급한 것과 마찬가지로 LIFO (last-in, first-out) 데이터 관리 방식을 따릅니다. (혹은 FILO, first-in, last-out) 활용 ▶ 컴퓨터 내부의 프로세스 구조의 함수 동작 방식 → 프로그램 안의 다양한 함수들이 동작하는 방식에 쓰이는 자료구조 #재귀함수로 이해해보기 def recursive(num): if num
2022.07.08 -
가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 FIFO 구조입니다. LILO 라고 하기도 하고, (last-in, last-out) 먼저 줄을 서는 사람이 먼저 입장하는 것을 떠올리면 이해가 빠를 것 같습니다. 용어 Enqueue: 큐에 데이터를 넣는 기능 Dequeue: 큐로부터 데이터를 꺼내는 기능 장점 파이썬 Queue 라이브러리에서 사용할 수 있는 class ▶Queue() : 가장 일반적인 큐 자료구조 ▶LifoQueue() : 나중에 입력된 데이터가 먼저 출력되는 구조, last-in,first-out = Stack ▶PriorityQueue() : 데이터마다 우선순위를 넣어서 우선순위가 높은 순으로 데이터 출력이 가능 일반적인 큐의 코드 예제를 다음과 같이 작성해보았습니다. queue...
[자료구조] 큐 (Queue)가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 FIFO 구조입니다. LILO 라고 하기도 하고, (last-in, last-out) 먼저 줄을 서는 사람이 먼저 입장하는 것을 떠올리면 이해가 빠를 것 같습니다. 용어 Enqueue: 큐에 데이터를 넣는 기능 Dequeue: 큐로부터 데이터를 꺼내는 기능 장점 파이썬 Queue 라이브러리에서 사용할 수 있는 class ▶Queue() : 가장 일반적인 큐 자료구조 ▶LifoQueue() : 나중에 입력된 데이터가 먼저 출력되는 구조, last-in,first-out = Stack ▶PriorityQueue() : 데이터마다 우선순위를 넣어서 우선순위가 높은 순으로 데이터 출력이 가능 일반적인 큐의 코드 예제를 다음과 같이 작성해보았습니다. queue...
2022.07.04 -
3편까지 쓰게 될 줄 몰랐던 딥러닝 핵심개념 수업 정리입니다! 딥러닝의 최대 적수인 overfitting을 피하는 방법에 대해 알아보겠습니다. 1) Dropout 신경망 training을 진행하면서, dropout은 매 batch마다 레이어 단위에서 일정 비율만큼의 신경망 Neuron을 꺼뜨리는 방식입니다. 그림의 맨 아래는 input layer, 맨 위는 output 입니다. 오른쪽의 dropout을 적용한 신경망을 나타낸 그림의 첫 번째와 세 번째 레이어에서는 40% 의 dropout을 적용하였고, 두 번째 레이어에서는 60%가 적용되었습니다. 주의할 점은 test 및 inference 단계에서는 dropout 을 적용하지 않고, 전체 neuron이 살아있는 채로 진행해야 한다는 점입니다. 아래 코드..
[딥러닝] 핵심개념(3) Overfitting 피하기3편까지 쓰게 될 줄 몰랐던 딥러닝 핵심개념 수업 정리입니다! 딥러닝의 최대 적수인 overfitting을 피하는 방법에 대해 알아보겠습니다. 1) Dropout 신경망 training을 진행하면서, dropout은 매 batch마다 레이어 단위에서 일정 비율만큼의 신경망 Neuron을 꺼뜨리는 방식입니다. 그림의 맨 아래는 input layer, 맨 위는 output 입니다. 오른쪽의 dropout을 적용한 신경망을 나타낸 그림의 첫 번째와 세 번째 레이어에서는 40% 의 dropout을 적용하였고, 두 번째 레이어에서는 60%가 적용되었습니다. 주의할 점은 test 및 inference 단계에서는 dropout 을 적용하지 않고, 전체 neuron이 살아있는 채로 진행해야 한다는 점입니다. 아래 코드..
2022.07.01