파이썬 이것저것/파이썬 딥러닝 관련 26

[Python] 딥러닝 CNN 연산

Fully-connected Layer와 이미지 데이터 FC Layer는 1차원 데이터를 요구 • 이미지를 단순하게 1차원으로 바꾸면 2차원 상에서 가지는 정보를 포기해야 함 - 이미지 내 사물 간의 거리 관계 등 - 색의 변화 → 특히 세로로 변하는 상황 • 즉, 공간 정보(Spatial Information)가 무너짐 • 따라서 이미지 처리에 특화된 딥러닝 모델이 등장 • CNN의 대표적인 구성 요소 - Convolutional Layer - Pooling Layer - 분류기(Classifier): Fully-connected layer로 구성 Convolution 연산 CNN을 구현하는 핵심 연산 • 커널과 Convolution 연산 - 전통적인 이미지 처리 분야에서 커널(또는 필터)이란 것이 존..

[Python] Tensorflow 커스텀 데이터셋 불러오기

Tensorflow 커스텀 데이터셋 불러오기 대용량의 데이터셋은 한번에 메모리에 불러오는 것이 불가능 대용량의 데이터셋을 학습에 사용할 경우에는 해당 데이터를 사용할 때만 메모리에 불러오는 방법을 사용 tensorflow에서는 이 과정을 수행하는 함수를 제공 tensorflow에서 제공하는 ImageDataGenerator는 데이터셋을 불러오는 기능과 데이터 증강을 적용하는 기능을 제공 사전에 dataset폴더에 train과 val을 구분하여 데이터를 만들어준다. import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' import tensorflow as tf from tensorflow.keras.preprocessing.image import ImageDataGen..

[Python] PIL 알아보기

PIL 알아보기 1. PIL(Pillow) 소개 Python에서 자주 사용하는 이미지 처리 라이브러리는 PIL(Python Imaging Library) . 하지만 기존 PIL 라이브러리 개발은 2011년에 중단되었고, 오픈 소스였던 해당 프로젝트를 복제(fork)한 Pillow 라는 이름의 프로젝트가 현재까지 개발되고 있음 2. PIL 시작하기 먼저 Pillow는 PIP를 이용하여 설치 python3 -m pip install Pillow In [4]: pip install Pillow Requirement already satisfied: Pillow in /opt/conda/lib/python3.8/site-packages (8.0.1) Note: you may need to restart the ..

[Python] 딥러닝 순환 신경망 (RNN)

순환 신경망(RNN) 자연어 처리를 위한 딥러닝 모델 MLP 기반 신경망의 자연어 분류 방식 일반적인 뉴럴 네트워크로 학습 한다면, 단어들이 순서에 대해서 기존의 뉴럴 네트워크는 신경을 쓰지 않고 학습을 함 철수가 영희를 좋아한다. 라는 문장이 있다면, 영희가 철수를 좋아한다 이렇게 될경우 의미가 달라지게 됨 자연어 분류를 위한 순환 신경망(Recurrent Neural Network) RNN 모델은 순서를 고려해서 학습을 실시한다. RNN 단어가 들어가서 다음 단어를 예측하려고 한다. 이 다음 단어가 수업 + 이 라는 예측을 하게 하고 그 다음 단어가 예측을 할때, 수업 + 이 가 같이 들어가서 Hidden State랑 합쳐지는 방식으로 다음단어를 예측하고 다시 합쳐져서 학습 하는 방식으로 실시함 순환..

[Python] 딥러닝 자연어 처리를 위한 딥러닝

자연어 처리 Process 1. 자연어 전처리(Preprocessing) 2. 단어 표현 (WordEmbedding) 3. 모델 적용 (Modeling) 원 상태 그대로의 자연어는 전처리 과정이 필요함 자연어는 오류를 어떻게 없앨 것인가 그리고 의미랑 전혀 상관없는 단어를 어떻게 없앨지 오류를 없애는 것을 타이핑을 잘못 했거나, 오타가 있을 경우, 컴퓨터는 단어인가 라고 생각 할 수 있기 때문에 오류를 전처리 해서 없애줘야 함 문장을 나누는것을 토큰으로 나누게 됨 Noise Canceling “안녕하 세요. 반갑 스니다.” => “안녕하세요. 반갑습니다.” Tokenizing 문장을 토큰(Token)으로 나눔, 토큰은 어절, 단어 등으로 목적에 따라 다르게 정의 “딥러닝 기초 과목을 수강하고 있습니다.”..

[Python] 딥러닝 이미지 처리(CNN)

이미지 분류 컴퓨터에게 이미지는 각 픽셀 값을 가진 숫자 배열로 인식 다양한 방법으로 이미지가 변형될 수 있는데 그러한 변화에도 강인한 이미지 처리를 어떻게 할 것인가 CNN 딥러닝 이전 컴퓨터 비전은 각 특징을 찾아서 특징을 중점으로 인식 이미지 데이터 확인해보기 Numpy, PIL, tensorflow.keras 등을 이용하여 이미지를 Numpy 배열로 바꿔보고, 이를 통해 이미지가 어떻게 이루어졌는지 확인 import pandas as pd import numpy as np import PIL import matplotlib.image as img import matplotlib.pyplot as plt from elice_utils import EliceUtils elice_utils = Elic..

[Python] 딥러닝 학습 속도 문제와 최적화-2

초기값 설정 초기값을 잘못 설정한다면 sigmoid를 통하고 하면서 w값을 가야되는데, 초기값에서 크게 벗어나지 못하는 문제가 발생 초기값을 잘 설정하는게 중요함 모델을 여러번 학습하다 보니, 학습된 모델이 다르게 나오게 된다. Weight Initializtion은 새로운 방법으로 여러 연구가 있었음 초기화 설정 문제 해결을 위한 Naïve한 방법 -표준 정규분포를 이용해 초기화 -표준편차를 0.01로 하는 정규분포로 초기화 Nural Net 굉장히 크고 노드가 많다면 하나의 레이어에 잇는 100개의 Normal한 Naive한 방법인 평균0 표준편차 1인 정규화 방법을 쓰면, 나중에는 양쪽 끝으로 몰리는 현상이 발생함 이러한 표준편차를 줄여보는 시도를 함 Xavier 초기화 방법 + Sigmoid 함수..

[Python] 딥러닝 학습 속도 문제와 최적화

딥러닝 학습의 문제점 데이터가 많아지면서 실질적인 한계에서 학습 시간이 기하급수적으로 증가하였고, 데이터 또한 수가 많아지면서 복잡해지는 문제가 생김 학습 속도 문제 데이터의 개수가 폭발적으로 증가하여 딥러닝 모델 학습 시 소요되는 시간도 함께 증가 기울기 소실 문제 더 깊고 더 넓은 망을 학습시키는 과정에서 출력값과 멀어질 수록 학습이 잘 안되는 현상 발생 역전파는 미분을 하면서 기울기가 소실된다는 것은0에 가까운 역전파가 예를 들어 0.1 * 0.1 이면 점점 0으로 수렴하게되고, 이에 가까운 파라미터 들은 잘 학습을 하지 못하게 되는 문제가 있음 실제로 찾아야 되는 weight 값을 찾지 못하는 문제가 있음 초기값 설정 문제 학습시 파라미터가 많지만 무언가의 초깃값을 설정해 줘야하는데, 가장 적합한..

[Python] 딥러닝 텐서플로 모델 구현하기

데이터셋 준비하기 : Epoch와 Batch Epoch: 한 번의 epoch는 전체 데이터 셋에 대해 한 번 학습을 완료한 상태 Batch: 나눠진 데이터 셋 (보통 mini-batch라고 표현) iteration는 epoch를 나누어서 실행하는 횟수를 의미 data = np.random.sample((100,2)) labels = np.random.sample((100,1)) # numpy array로부터 데이터셋 생성 dataset = tf.data.Dataset.from_tensor_slices((data, labels)) dataset = dataset.batch(32) 딥러닝 모델 구축 텐서플로우의 딥러닝 모델을 간단하게 진행할 때 많이 사용하게 됨 하나의 layer에서 node가 몇개가 될것인..

[Python] 딥러닝 텐서플로(TensorFlow)

유연하고, 효율적이며, 확장성 있는 딥러닝 프레임워크 대형 클러스터 컴퓨터부터 스마트폰까지 다양한 디바이스에서 동작한다. 텐서 텐서는 1-D, 2-D, 3-D 데이터는 텐서로 만들어서 다차원 배열로 만들어짐 텐서(Tensor) + 플로우(Flow) 텐서는 1-D, 2-D, 3-D 데이터는 텐서로 만들어서 다차원 배열로 만들어 진다. 텐서를 통해서 여러가지 사칙연산을 진행한다고 했을 때, 이에 대한 Output을 만듬 예를 들면, Input Tensor와 Feature Flow는 output까지 가는것을 볼 수 있다. 상수텐서 value : 반환되는 상수값 shape : Tensor의 차원 dtype : 반환되는 Tensor 타입 name : 텐서 이름 import tensorflow as tf # 상수형..