728x90
반응형

전체 글 180

텐서 연산 기초 공부하기

[케라스 창시자에게 배우는 딥러닝] 참고 📢 목차 1. 원소별 연산 (element-wise operation) 2. 브로드캐스팅 (broadcasting) 3. 텐서 점곱 ( Tensor dot operation) 4. 텐서 크기 변환 (Tensor reshaping), 전치(transposition) 5. 텐서 연산의 기하학적 해석 6. 딥러닝의 기하학적 해석 컴퓨터 프로그램의 이진수 입력을 몇 개의 이항 연산(AND, OR, NOR 등)으로 표현할 수 있는 것 처럼, 심층 신경망이 학습한 모든 변환을 텐서 연산(tensor operation)으로 나타낼 수 있다. ex) 텐서 덧셈, 텐서 곱셈 keras.layers.Dense(512, activation='relu') Dense 클래스의 객체가 모..

신경망의 데이터 표현 3 - tensor & data 종류와 예시

[케라스 창시자에게 배우는 딥러닝] 참고 텐서의 예 : 데이터 종류 Tensor 크기 데이터 종류 2D 텐서 (samples, featutres) 벡터 데이터 3D 텐서 (samples, timesteps, features) 시계열 데이터 또는 시퀀스 데이터 4D 텐서 (samples, height, width, channels) 또는 (samples, channels, height, width) 이미지 5D 텐서 (samples, frames, height, width, channels) 또는 (samples, frames, channels, height, width) 동영상 1. 벡터 데이터 (samples, featutres) 대부분의 경우에 해당. 이런 데이터셋에서는 하나의 데이터 포인트가 벡터로..

신경망의 데이터 표현 2 - data 다루기

[케라스 창시자에게 배우는 딥러닝] 참고 사실 딥러닝을 시작하면서 코딩을 이해하는데 어려움이 많았다. 기초가 부족한채 계속 달려나가니 공부하면 할 수록 카오스 상태에 빠졌다. 기본 용어라던지 (사실 tensor가 뭔지도 몰랐다.) 이미지를 숫자로 표현하고 슬라이드를 자유자재로 사용하고 이미지를 추출하는 것 등 기본적인 부분부터 흔들렸던 것 같다. 기초부터 다시 차근차근 익혀보자! 📢 목차 1. 이미지 데이터 tensor 속성, 이미지 불러오기 2. 이미지 개수 조절, 이미지 자르기(픽셀 조절) - slicing 3. 배치 데이터 1. 이미지 데이터 tensor 속성, 이미지 불러오기 MNIST 데이터의 이미지 배열은 8비트 정수형 3D 텐서이다. 정확하게 28 X 28크기의 정수 행렬 6만 개가 있는 배..

신경망의 데이터 표현 1 - tensor

[케라스 창시자에게 배우는 딥러닝] 참고 텐서(tensor) : 다차원 넘파이 배열. 머신러닝 기본 데이터 구조로 사용. 텐서플로를 비롯해 딥러닝 라이브러리들은 다차원 배열을 텐서라고 부른다. (하지만 파이썬 커뮤니티에서 넘파이 배열을 텐서라고 부르지는 않는다.) 텐서는 임의의 차원 개수를 가지는 행렬의 일반화된 모습이다. 텐서에서는 차원(dimension)을 종종 축(axis)라고 부른다. 핵심적으로 텐서는 데이터를 위한 컨테이너(container)이다. 거의 수치형 데이터를 다루므로 숫자를 위한 컨테이너라고 생각하면 된다. 텐서의 핵심 속성 축의 개수(rank) : 2D = (axis=2), 3D = (axis=3) 크기(shape) : 텐서의 각 축을 다라 얼마나 많은 차원이 있는지 나타낸 파이썬의..

딥러닝 알고리즘의 변화

[케라스 창시자에게 배우는 딥러닝] 참고 2000년대 후반까지는 매우 깊은 심층 신경망을 훈련시킬 수 있는 안정적인 방법을 찾지 못했었다. 깊게 쌓은 층을 통과해서 그래디언트(gradient)를 전파하는 것이 가장 큰 문제였다. 신경망을 훈련하기 위한 피드백 신호가 층이 늘어남에 따라 희미해졌기 때문이다. 하지만 2009~2010년 경 몇 가지 간단하지만 중요한 알고리즘이 개선되면서 그래디언트를 더 잘 전파되게 만들어 주었고, 그 결과 10개 이상의 층을 가진 모델을 훈련시킬 수 있게 되었다. 신경망 층에 더 잘 맞는 활성화 함수(Activation function) - ReLU함수 층별 사전 훈련(pre-trained)을 불필요하게 만든 가중치 초기화(weight initialization) 방법 - ..

머신러닝의 역사

[케라스 창시자에게 배우는 딥러닝] 참고 확률적 모델링(Probabilistic modeling) : 초창기 머신 러닝 형태 중 하나로 통계학 이론을 데이터 분석에 응용한 것. 가장 잘 알려진 알고리즘 중 하나는 Naive Bayes (나이브 베이즈) 알고리즘 이다. 나이브 베이즈는 입력 데이터의 특성이 모두 독립적이라고 가정하고 베이즈 정리(Bayes' theorem)를 적용하는 머신 러닝 분류 알고리즘이다. 이런 형태의 데이터 분석은 컴퓨터보다 앞서 있었기 때문에 수십년 전에는 수작업으로 적용했다.(1950년대) 이와 밀접하게 연관된 모델이 로지스틱 회귀(logistic regression)이다. 이 모델은 현대 머신 러닝의 시작으로 여겨진다. 나이브 베이즈와 비슷하게 컴퓨터보다 훨씬 오래 전부터 있..

딥러닝의 개념과 동작 원리

[케라스 창시자에게 배우는 딥러닝] 참고 사람들은 어떤 것을 이해하기 위해서 전체적인 그림의 숲을 먼저보고 세세한 내용의 나무를 보는 방법을 많이 선호한다. 딥러닝에 대한 이해를 전체적인 개념(숲)부터 내부 동작원리(나무)로 나눠서 다시 정리해보는 시간을 가져보자 :) ⛺ 숲으로 보는 딥러닝 (큰 개념) 머신러닝 : 많은 입력과 타깃의 샘플을 관찰하면서 입력(ex.image)을 타깃(ex.cat)에 매핑(mapping)하는 것. 심층 신경망 : 입력-타깃 매핑을 간단한 데이터 변환기(layer)를 많이 연결해 수행하는 것. (데이터 변환은 샘플에 노출됨으로써 학습이 이루어짐.) 🌳 나무로 보는 딥러닝 (동작원리) 층에서 입력 데이터가 처리되는 상세 내용은 일련의 숫자로 이루어진 층의 가중치(weight)..

'표현(representation)을 학습하다' 의미

[케라스 창시자에게 배우는 딥러닝] 참고 representation learning 머신러닝과 딥러닝의 핵심 문제는 '의미 있는 데이터로의 변환' 이다. 다시 말하면 입력 데이터를 기반으로 expectation(기댓값, 기대출력)에 가깝게 만드는 유용한 표현(representation)을 학습(learning)하는 것이다. 여기서 표현이란.. 데이터를 인코딩(encoding)하거나 묘사하기 위해 데이터를 바라보는 다른 방법을 말한다. 예를 들어 컬러 이미지는 RGB format(빨,녹,파)이나 HSV format(색상,채도,명도)으로 인코딩 될 수 있으며, 이들은 같은 데이터의 두 가지 다른 표현이다. 상황에 따라 A표현으로는 해결하기 힘든 문제가 B표현으로는 쉽게 해결될 수 있다. 예를들어 '이미지에 ..

Keras 정의, 특징, 사용법

케라스란? 대표적으로 텐서플로(TensorFlow)는 구글에서 공개한 오픈 소스로 전 세계적으로 가장 많이 사용한다. lua(루아) 기반이었던 Torch(토치)는 파이썬을 기반으로 한 파이토치(PyTorch)로 바뀌었고, 많이 이용 중이다. 케라스(Keras)는 텐서플로 다음으로 사용자가 많다. 직관적인 흐름으로 코드를 작성할 수 있어 다른 프레임워크에 비해 추상화가 굉장히 잘 되어있다. 그리고 백엔드로 텐서플로, Theano(씨아노), CNTK, MXNet을 사용한다. 케라스는 모델을 빠르게 구현하거나 여러가지 방법으로 테스트하고 실행할 때 많이 사용하며, 운영 환경과 디테일한 모델을 구현하려 할 때 텐서플로로 재구현 하기도 한다. 케라스를 사용해 컴퓨터 비전부터 자연어 처리까지 이미지 분류, 시계열 ..

텍스트 데이터 전처리 - 1) 토큰화

텍스트의 토큰화(Tokenization) 텍스트는 단어별, 문장별, 형태소별로 나눌 수 있다. 이렇게 작게 나누어진 하나의 단위를 토큰(token)이라고 한다. 그리고 입력된 긴 텍스트를 잘게 나누는 과정을 토큰화(tokenization) 라고 한다. 1) enumerate, split words = "Strawberry, Orange, Coconut, Lemon, Banana!;" for count, ele in enumerate(words[:5]): print(count, ele) >> 0 S >> 1 t >> 2 r >> 3 a >> 4 w words.split(', ') >> ['Strawberry', 'Orange', 'Coconut', 'Lemon', 'Banana!;'] 2) 정규식 사용 #..

NLP 기초 설명

0. NLP의 목표 : 유용한 업무 수행을 위해서 Natural Language(사람의 언어)를 컴퓨터가 처리하고 이해할 수 있도록 하는 것 1. NLP에 사용하는 데이터 텍스트 데이터 시계열 데이터 시퀀스 데이터 2. NLP에 사용하는 기본 딥러닝 모델 RNN(Recurrent Neural Network), 1D 컨브넷(1D Convnet) 등 (그 외 RNN을 보완한 다양한 모델이 있음.) 3. 전처리 텍스트 자료를 모았다고 해서 이를 딥러닝에 그대로 입력할 수 있는 것은 아니다. 컴퓨터 알고리즘은 수치로 된 데이터만 이해할 뿐 텍스트를 이해할 수 없기 때문이다. 따라서 텍스트를 정제하는 전처리 과정이 꼭! 필요하다. 4. NLP+Deep Learning Model 응용 - 글의 주제나 책의 저자 식..

활성 함수(Activation Function) 비교

Step, Sigmoid, Tanh, ReLU, Leaky ReLU, PReLU, ELU, Maxout, Softmax Function Github Link 🔽 자세한 코드 gggggeun/study Contribute to gggggeun/study development by creating an account on GitHub. github.com 1. 계단함수 Step function import numpy as np import matplotlib.pyplot as plt import math # 샘플데이터 x = np.array([-1, 1, 2]) # 0 보다 클 경우 1 y = x>0 y = y.astype(np.int) def step_function(x) : return np.array(..

MNIST - practice1,2 + 자세한 설명

작업 순서 학습시킬 준비를 한다.(신경망 만들기, compile, 전처리) train_images와 train_labels를 네트워크에 주입한다. 네트워크는 이미지와 레이블을 연관시킬 수 있도록 학습한다. test_images에 대한 예측을 네트워크에 요청하면 그 예측이 test_labels와 맞는지 확인할 것이다. 1. tesorflow 사이트 초보자용 가이드 (연습1) tensorflow사이트 www.tensorflow.org/tutorials/quickstart/beginner?hl=ko import pandas as pd !pip install tensorflow-gpu==2.0.0-rc1 import tensorflow as tf mnist = tf.keras.datasets.mnist (x_t..

신경망의 구성, 구조 with python

1. 신경망의 구성 신경망은 input layers(입력층), hidden layers(은닉층), output layers(출력층)으로 나뉩니다. 사실 은닉층의 수가 최소 2개 이상이어야 deep하다고 할 수 있습니다. 즉, layer(층)이 총 3개 이상인 것을 신경망(딥러닝)이라고 합니다. (층을 셀 때 입력층은 포함x) 위의 그림은 단일 퍼셉트론으로 입력층과 활성화함수, 출력층으로만 이루어져 있습니다. 가운데 노드는 입력층에 가중치를 곱하고 Bias를 더한 선형결합 연산 후 활성함수를 거치면 출력값이 도출됩니다. 그럼 위의 그림은 무엇일까요? 가운데 hidden layer(은닉층)이 1층 있습니다. 은닉층이 1개 이상이면 다층 퍼셉트론 이라고 합니다. 하지만 딥러닝(신경망)이라고 할 수는 없습니다...

python - np.linspace (균등한 시퀀스 array)

숫자로 된 시퀀스를 생성. np.arange와 유사하지만 np.array로 구성된 균등한 간격을 둔 시퀀스를 생성. import numpy as np np.linspace(start, stop, num, endpoint, dtype) 예) np.linspace(0, 100, 5) >>> array([0., 25., 50., 75., 100.]) arange에서는 5간격만큼 20개의 아이템이 나온다면, linspace는 5개의 아이템을 array로 생성한다. start - 시작값 stop - 마지막값 num(optional) - breakpoint, 아이템의 개수 (default=50) endpoint(optional) - endpoint=True 이면 마지막값 포함, Flase이면 마지막값 생략 ex) ..

퍼셉트론의 한계, XOR

퍼셉트론은 Frank Rosenblatt이 1957년 고안한 알고리즘입니다. 그러나 인공지능 선구자 Marvin Minsky 교수가 퍼셉트론의 한계에 대해 1969년 논문으로 발표했습니다. 퍼셉트론의 한계에 대해서는 XOR(exclusive OR)문제로 풀어볼 수 있습니다. XOR 문제는 디지털 논리회로에 등장하는 개념입니다. 컴퓨터는 두 가지의 디지털 값(0과 1)을 입력해 하나의 값을 출력하는 회로가 모여 만들어지는데, 이 회로를 GATE(게이트)라고 합니다. 그리고 XOR를 표로 나타낸 것을 진리표라고 합니다. 1. AND GATE # 위 예시를 python으로 제작을 해보겠습니다. # w1, w2는 가중치(weight)를 의미하는 변수입니다. def AND(x1, x2): w1, w2, theta..

신경망 관련 개념 정리

1. 퍼셉트론이란? 신경망을 이루는 가장 작은 단위. 입력값과 활성함수로 출력값을 넘기는 가장 작은 신경망 단위. 다수의 신호를 입력으로 받아 하나의 신호를 출력. 0과 1의 값. 2. 신경망(딥러닝)이 중요한 이유 단순 계산만이 아닌 이전에 컴퓨터가 잘 못하는 사물인식, 분할기술, 자연어 처리 등의 영역까지 사람보다 더 뛰어난 성과를 보이기 때문에. 3. 신경망은 오랜기간 동안 관심을 못받다가 어떻게 다시 대두되었나? 컴퓨터 성능, 인터넷 속도 증가, 데이터 용량 증가 등으로 딥러닝 기술이 눈에 띄게 발전해 가치를 인정받아 여러분야에 활용되게됨. 4. 딥러닝의 장점과 단점 장점 : =2번 단점 : 데이터가 적을 때는 성능을 발휘하지 못함. 즉, 단순한 문제를 풀 때는 쓸모가 없음. 5. 딥러닝(신경망)..

tensorflow.keras 손글씨 MNIST

www.youtube.com/watch?v=TV3oplqa5VA(유튜브 영상)참고 !pip install tensorflow-gpu==2.0.0-rc1 import tensorflow as tf #손글씨모듈 from tensorflow.keras.datasets import mnist from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Dropout, Flatten from tensorflow.keras.layers import Conv2D, MaxPooling2D from tensorflow.keras.utils import to_categorical from tensorflow.keras.pr..

Operators 연산자

Arithmetic operators 산술연산자 Assignment operators 대입 연산자 Comparison operators 비교 연산자 Logical operators 논리 연산자 Identity operators 항등 연산자 객체가 동일한지가 아니라 실제로 동일한 객체이고 동일한 메모리 위치를 갖는 객체 비교 Membership operators 멤버쉽 연산자 Bitwise operators 비트 연산자 이진 숫자 비교 산술 연산자 (Arithmetic Operators) + Addition 덧셈 x + y - Subtraction 뺄셈 x - y * Multiplication 곱셈 x * y / Division 나눗셈 print(13 / 3) >> 4.3333333333 % Modulus..

Python Boolean 평가하기

1. 문자열 - 기본적으로 모두 True bool("abc") bool(["apple", "cherry", "banana"]) > True > True - 예외 False False, None, 공백인 경우 bool(False) bool(None) bool("") bool(()) bool([]) bool({}) > False > False > False > False > False > False 2. 숫자 - 0을 제외하고 모두 True bool(123) bool(0) > True > False 3. boolean 확인하는 함수, 내장함수(isinstance) def myFunction() : return True if myFunction(): print("YES!") else: print("NO!") ..

728x90
반응형