분류 전체보기 54

한국어 띄어쓰기: 실전 예제로 배워보는 딥러닝 자연어 처리

한국어 띄어쓰기: 실전 예제로 배워보는 딥러닝 자연어 처리 아름다운별지구에오신여러분을환영합니다 딥러닝도 좀 배웠고, 자연어처리도 좀 배웠고, pytorch도 좀 배웠는데 막상 뭔가를 만들어 보려면 막막할 수 있습니다. 오늘은 pytorch를 이용해서 한국어 띄어쓰기 모듈을 바닥부터 만들어보고, 이 과정에서 실제로 어떻게 간단하 자연어처리기를 개발하는지 살펴보려고 합니다. "아름다운별지구에오신여러분을환영합니다"를 입력으로 주면 "아름다운 별 지구에 오신 여러분을 환영합니다"로 바꿔주는 것이 오늘의 목표입니다. 딥러닝과 Pytorch에 대해서 기본적인 부분을 습득하고 있다고 가정하겠습니다. 특히 Pytorch에 대한 사용법은 설명하지 않으니 참고 부탁드립니다. 문제 정의, 발상의 전환 머신러닝 문제를 풀 때..

Deep Learning 2021.05.26

Iterator, Generator

문제 두가지 아주 아주 큰 list 0부터 99,999,999까지 숫자의 제곱을 출력하는 코드를 살펴보겠습니다 for i in [i ** 2 for i in range(100000000)]: print(i) 첫번째 결과인 0의 제곱이 출력될 때까지 얼마나 걸릴까요? 제 컴퓨터에서는 약 27초가 걸렸습니다. 그냥 0의 제곱을 출력할 뿐인데 왜 이렇게 오래 걸릴까요? 문제는 바로 [i ** 2 for i in range(100000000)] 부분에 있습니다. 이 코드는 List Comprehension이기 때문에 for loop를 돌기 전에 0부터 99,999,999까지 모든 수의 제곱을 먼저 계산합니다. 그리고 만들어진 list를 대상으로 for loop가 돕니다. 하지만 우리가 하고 싶은 것은 순차적으로..

Python 2021.05.08

인공지능, 머신러닝, 딥러닝

인공지능, 머신러닝, 딥러닝 이제는 인공지능, 머신러닝, 딥러닝이라는 표현을 일상 생활에서 듣는 것이 그렇게 어색한 일이 아닙니다. 인공지능이야 예전부터도 소설이나 영화에서도 곧 잘 듵을 수 있었지만, 머신러닝, 딥러닝 같은 용어는 전공 서적에서나 볼 수 있었는데 말이죠. 이 세가지는 비슷하게 들리고 실제로 많은 경우에 혼용해서 사용하기도 합니다. 오늘은 이 세가지가 어떻게 다른지 한번 이야기해보려고 합니다. 인공지능 인공지능은 말그대로 사람의 지능을 흉내내기 위해서 인공적으로 만들어낸 것들입니다. 실제 사람은 아닌데 사람이 할 수 있는 일을 비슷하게 한다면 넓은 범위로 인공지능이라고 할 수 있습니다. 음성인식(사람이 받아쓰기 하는 것을 흉내낸 인공지능), 얼굴인식(사람이 얼굴을 식별하는 것을 횽내낸 인..

Deep Learning 2021.05.05

List Comprehension

시작하기 전에 list comprehension은 기능을 배우는 것보다 이름을 이해하는 것이 더 어렵습니다. list comprehension이라는 용어에 대한 설명은 관심있는 분들을 위해서 이 글의 마지막에 남겨두겠습니다. 소개 list comprehension이 하는 일은 이미 있는 list를 가지고 무엇인가 작업을 해서 새로운 List를 만드는 것입니다. 간단한 예를 하나 보겠습니다. [1, 2, 3, 4]의 각 값을 제곱해서 [1, 4, 9, 16]을 만들고 싶다고 가정해보겠습니다. result = [] for i in [1, 2, 3, 4]: result.append(i ** 2) print(result) [1, 4, 9, 16]아주 직관적인 코드입니다. Functional Programming..

Python 2021.05.04

Jupyter Lab

소개 파이썬은 장점이 참 많은 언어입니다. 깔끔한 문법, 수많은 라이브러리, 다양한 실행 환경 등 말이죠. 파이썬의 수많은 장점 중에서 빼놓을 수 없는 것이 바로 인터렉티브한 개발 환경이라고 생각합니다. C/C++나 Java 같은 언어만 사용하다가 파이썬을 접하게되면 언어 자체 뿐만 아니라 인터렉티브한 개발 환경에 감탄을 하게 됩니다. 아주 기본적인 REPL(Read-Eval-Print Loop)를 제공하는 기본 파이썬 명령만 하더라도 이미 훌륭하지만, 여기에서 iPython으로 넘어간다면 그야말로 신세계를 경험할 수 있습니다. 이렇게 뛰어난 파이썬의 개발 환경 속에서도 요즘 가장 돋이는 것은 Jupyter Lab이라고 할 수 있습니다. Jupyter Lab을 사용하면 IDE를 따로 설치하지 않고도 웹 ..

Python 2021.05.01

Tensorflow가 GPU를 지원하는지 알아보자

Tensorflow를 설치해서 사용하다보면 현재 설치된 환경이 GPU를 제대로 지원하는지 아닌지 궁금할 때가 있습니다. 요즘은 설치가 많이 편해지기는 했지만, 리눅스 버전, GPU driver 버전, TF 버전, Cuda 버전 등 모두 맞추기가 쉽지 않았으니까요. TF를 설치를 해도 나도 모르게 CPU 버전으로 돌아가는 경우가 왕왕 있습니다. (GPU Tensroflow는 Docker를 이용하는 것을 추천합니다. Docker를 이용해서 편리하게 GPU Tensorflow를 사용하자) 현재 환경이 GPU를 지원하는지 어떻게 알 수 있을까요? 구글링을 해보면 TF 1.x 시절부터해서 여러가지 방법이 나옵니다. 현재 TF 2.x 기준으로 가장 간략한 방법은 다음 코드를 실행해보는 것입니다. import ten..

Deep Learning 2020.06.24

*args, **kwargs

*args, **kwargs Python 코드를 보다보면 함수에 *args, **kwargs와 같은 표현을 볼 수 있습니다. 가변 인자들인데요. 가변 인자라는 말부터가 어렵습니다. 함수에 전달한 인자들이 딱 고정되어 있지 않고, 상황에 따라 바뀔 때를 지원하기 위해서 사용하는데요. 예를 들어서 한번 살펴보겠습니다. positional arguments, keyword arguemnts 본격적으로 *args, **kwargs에 대해서 이야기하기 전에 positional arguments와 keyword arguments를 먼저 다루어보겠습니다. 예를 들어 아래와 같은 함수가 있다고 가정해보겠습니다. def f(a, b, c): print(a, b, c) 아래와 같이 일반적으로 호출을 할 수 있습니다. f(..

Python 2020.06.23

Tensorflow Custom Layer

Tensorflow Custom Training에서는 keras의 Model 클래스를 이용해서 Custom Model을 만들고 훈련시키는 법을 알아보았습니다. 이번에는 tf.keras.layers.Layer를 사용해서 Custom Layer를 만드는 법을 알아보겠습니다. Tensorflow Custom Training에서 만들었던 예시를 사용해서 이야기를 이어가보겠습니다. tf.keras.Sequential을 쓰지 않고 직접 Model의 동작을 구성하기 위해서 Custom Model을 사용한다면, Custom Layer는 Model 내에서 특정 Layer의 동작을 직접 구성하기 위해서 사용합니다. 예를 들어 새로운 Dropout 알고리즘을 생각해냈다고 가정해보겠습니다. MyDropout이라는 Layer를..

Deep Learning 2020.06.12

Python Reflection 맛보기

Introspection vs Reflection Python이 가지는 매력 중의 하나는 언어의 많은 부분이 동적이라는 점입니다. Instrospec과 Reflection이 그런 기능 중 일부인데요. Introspection은 실행 시에 object에 대한 정보를 알아내는 것, Reflection은 여기에서 그치지 않고 object에 대한 정보를 수정하는 것을 의미합니다. 엄밀히 두가지의 의미가 다르지만 Reflection으로 합쳐서 부르는 경우가 많습니다. Reflection 기능은 자주 쓰이지는 않지만 알아두면 유용할 때가 있습니다. 예를 들어, 코드 작성 시에는 함수 이름을 모르지만 실행 중에 함수 이름을 알아내서 실행시킨다거나, Python의 Duck typing을 통과하기 위해서 attribut..

Python 2020.06.09

Tensorflow Callback 사용하기

1. Callback 이란? 모델을 훈련시키는 일은 대체적으로 오랜 시간이 걸립니다. 짧게는 몇분에 끝나기도 하지만 보통은 몇 시간에서 몇 일이 걸리기도 합니다. Tensorflow가 기본적인 Log를 출력해주기는 하지만 훈련이 끝날 때까지 기도하고 있기에는 너무나 불안한 일입니다. 그래서 Tensorflow는 모델을 훈련시키는 동안 어떤 이벤트들이 발생하면 개발자가 원하는 동작을 수행할 수 있는 방법을 제공하고 있습니다. 개발자가 원하는 동작을 Callback이라고 부릅니다. Callback 자체는 새로운 개념은 아닙니다. Event-driven 개발 방식에서 쓰이고요. GUI 개발을 해보신 분들은 익숙하실 겁니다. 기본 방식은 이렇습니다. Tensorflow가 미리 이벤트들을 정의합니다. 이벤트는 개..

Deep Learning 2020.06.04