![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dBaZSS/btqCNGDVhLB/fUmw5KUIK4kpP692lC0cek/img.png)
No module named 'tensorflow.examples.tutorials' 이 오류는 tutorials폴더가 존재하지 않기 때문에 발생하는 오류인데요. 저는 Mnist 데이터셋을 가져와 실습을 하는 과정에서 맞닥뜨리게 되었습니다 ㅜㅜ 아마 저처럼 비교적 최근 텐서플로우를 설치하여 공부를 시작하신 분들은 같은 오류를 맞닥뜨리시지 않을까 싶습니다. 이 오류를 해결하기 위해서는, 직접 텐서플로우 깃허브(https://github.com/tensorflow/tensorflow)에 가서 Clone or download 버튼을 통해 다운받으신 후 tensorflow - examples 폴더 하위에 있는 tutorials 폴더를 파이썬이 설치된 폴더의 Lib/site-packages/tensorflow_..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dlFiJM/btqCKgNhS1p/gMmMg7ZG4kEVkTkjw1I011/img.png)
오늘은 앞서 공부한 Neural Network 개념을 기반으로 두 가지 문제에 대해 실습해보려 합니다! 한 가지는 기존의 방법으로 풀리지 않았던 XOR 문제이고 다른 한 가지는 MNIST숫자 데이터를 분류하는 숫자 분류기입니다. XOR연산은 다음과 같습니다. 각각의 x와 y데이터를 위와 같이 나타 낼 수 있습니다. 우선 일반적인 접근 방법으로 풀어볼까여? 위 방법은 뉴럴넷을 배우기 전에 사용하던 방식으로 OR나 AND 같은 연산에서 잘 작동하는 모델입니다. 하지만 위 코드를 돌려보면, 정확도가 0.5로 제대로 학습되지 않는 것을 확인해 보실 수 있습니다. 그럼, NN을 적용해 볼까요? 정말 간단한 문제기에 아래와 같이 하나의 레이어만 추가 해주면 됩니다 !ㅎㅎ Wide하고 Deep 하게 구성할 필요도 없..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/DSZEi/btqCBwCewaY/wZCDmYb47r2uXDhWURl8I0/img.png)
앞서 머신러닝에 대해 배웠다면, 이제 본격적으로 딥러닝에 대해 공부해 볼 시간입니다! 딥러닝 하면 많이 들어봤을 CNN RNN을 공부하기에 앞서, ANN, 즉 인공신경망이 뭔지 짚고 넘어가려 합니다. ANN은 Artificial Neural Network의 약자로, 인공신경망을 의미합니다. 인공신경망은 그 이름에서 알 수 있듯이, 뇌에서 영감을 받은 학습 알고리즘 입니다. 각각의 뉴런이 다음 뉴런으로 다양한 세기의 신호를 보내면서 문제를 해결하는 시스템을 모방한 것이죠. 하나의 뉴런이 다양한 뉴런으로부터 신호를 받고 다음 뉴런으로 신호를 보내듯이, ANN역시 똑같은 매커니즘을 거칩니다. 다양한 input data를 받아 각각의 가중치가 곱해지고 bias가 더해져 다음 노드로 전달되는것이죠. 이런 뉴런을 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bOD5DM/btqCcBYIbOv/uEgAhSSLLWkKM54qg1RSKK/img.png)
Training Data & Validation Data & Test Data 트레이닝 셋으로 학습시킨 후 트레이닝셋으로 테스트 하면 공정한가? -> 나쁜 방법 데이터의 70퍼센트정도는 트레이닝 셋, 30퍼센트정도는 테스트 셋으로 설정 테스트셋으로 예측값과 실제값 비교하여 성능 측정 트레이닝 셋을 또 validation set으로 나눌 수 있음 validation set -> 모의 시험 느낌 (알파, 람다등을 조절 하기 위해) 데이터셋이 굉장히 많은 경우 ->online learning 학습 방법 만약 트레이닝셋이 100만개 있다고 가정, 한 번에 넣어서 학습시키기에 너무 양이 많다 ->100만개의 데이터를 잘라 10만개씩 학습 우리는 선형회귀부터 시작해서 Softmax회귀까지 트레이닝 데이터셋을 테스트..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/oAIkJ/btqChHbxScX/26iUano3tK7r7AYktUXsd0/img.png)
이제 본격적으로 인공신경망을 공부하기 전에 여러 개념들을 정리하고 넘어가 볼까 합니다. :) 머신러닝 프로세스 학습하고자 하는 가설(Hypothesis)을 수학적 표현식으로 나타내기 가설의 성능을 측정할 수 있는 손실함수 정의하기 손실함수를 최소화할 수 있는 학습 알고리즘 설계하기 gradient descent - 경사 하강법 (경사를타고 내려가는 알고리즘, 매 스텝마다 미분값 계산) Batch Gradient Descent - 전체 트레이닝 데이터를 하나의 Batch로 만들어 사용, 트레이닝 데이터 개수가 매우 많아질 수 있고, 파라미터 한 스텝을 업데이트 하는데 굉장히 많은시간이 소모 -> 최적의 파라미터를 찾는데 오랜 시간소모 Stochastic Gradient Descent - 한 스텝을 업데이트..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cMiNJB/btqCdgTxuaL/ktkFowQOrLIHbk7t1puKTK/img.png)
로지스틱 회귀와 연결되는 내용이라 할 수 있는 Softmax에 대해 정리해보려 합니다. :) 기존 로지스틱 분류가 이진 분류 (0과 1, 참 거짓) 라면 소프트맥스는 여러개를 분류하는 함수 입니다. 만약 세가지 경우의 수를 비교한다고 했을때, 로지스틱 회귀로도 세가지의 경우를 예측가능 합니다. 만약 각각 A라는 경우, B라는 경우, C라는 경우가 있다고 했을 때, 이진분류로 분별한다 하면 다음과 같이 나타내면 됩니다. A인 경우와 A가 아닌 경우 B인 경우와 B가 아닌 경우 C인 경우와 C가 아닌 경우 감이 잘 안오신다면, 그래프로 한번 그려봅시다! 이를 식으로 나타내면, 다음과 같이 행렬곱으로 나타낼 수 있고 각각의 경우에 대한 예측값을 시그모이드함수를 거쳐 1 혹은 0으로 나타내면 여러개의 경우의수도..
Git에서 원격저장소에 있는 내용을 지역저장소로 가져올 때 두가지 방법을 사용 할 수 있습니다. 하나는 Pull 이고 다른 하나는 fetch인데요. 두 가지 개념을 간단히 설명하면 이렇습니다 ㅎㅎ pull - 원격저장소로 부터 내용을 가지고 온 후 병합 fetch - 원격저장소로 부터 내용을 가지고 온 후 병합X 두 가지 모두 원격저장소로부터 내용을 가지고 온다는 점에서 기능이 유사하지만, 한가지 차이점이 있습니다. 바로 병합을 하느냐 안하느냐의 차이인데요. 당연히 이러한 기능적 차이를 둔 이유가 있겠죠? 보통은 pull을 많이 사용하기에, 왜 기능이 겹치는 fetch라는 기능이 있는지에 대해 설명드리겠습니다. pull을 쓰면 바로 병합을 같이 해버리지만, 만약 fetch를 사용하면 병합을 수동으로 해줘..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/ccQ5xb/btqB6jjrOmW/ihsydjlmC6snaikvspfbE1/img.png)
앞서, 깃헙에 대해 살펴 보았으니, 이제 본격적으로 사용 방법에 대해 알아봐야 겠죠? 우선 깃헙에 회원가입을 하셨으면, 로그인을 해줍시다. 로그인 하면 다음 사진과 같이 화면 상단에 초록색버튼 New가 있을겁니다. 이 버튼은 깃허브에 원격저장소를 만들겠다는 버튼입니다. 클릭해 줍시다! 여기서 깃허브를 처음 사용하시는 분들은, 어렵게 느끼실 수도 있는데요. 전혀 두려워 할 것 없습니다! 각각의 용어에 대한 설명은 다음과 같습니다. Repository name - 원격저장소 이름 Description - 원격저장소에대한 간략한 설명 (선택 사항이므로 안적으셔도 됩니다.) Public & Private - 원격저장소를 공개로 설정할 것인지, 비공개로 설정할 것인지 선택 Initialize this reposi..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/Wt2rO/btqB8PgELaQ/k6t7Qkp8WbtzFaZfKexZsK/img.png)
드디어! 깃헙에대해 정리할 날이 오는군요. Github는 대표적인 원격저장소로써, 한마디로 지역저장소(컴퓨터)와 대비되는 개념입니다. 주로 이 두가지 목적때문에 깃헙을 사용 하게되죠 소스코드 백업 협업 깃헙을 사용하려면 당연히 회원가입을 해야겠죠? https://github.com/ 사이트에 가셔서 Sign up 버튼을 눌러 계정을 만들고 로그인 해주시면 됩니다. Github을 이용하려면 Github 사이트를 둘러보며 어떻게 사용하는지, 그리고 각각의 명칭들이 뭘 의미하는지 숙지하고 있으면 좋겠죠? 오픈소스 프로젝트나 다른사람들의 프로젝트를 검색해 보고 싶다면, 네이버, 구글등의 포털에서 검색하는 것처럼 검색창을 이용해 검색하면 됩니다. 참고로 Git도 오픈소스인데, 이렇게 Git이라 검색해서 Git에 ..
오늘은 Github에 대한 설명으로 넘어가기 전에, Git의 몇가지 작동방식에대해 짚고 넘어갈까 합니다! 브랜치의 원리 HEAD는 현재 자신이 어떤 브랜치에 속하는지 가리키는 것이라고 보면 된다고 했었는데요. 정확하게 알기위해 내부 구조를 보면, HEAD디렉토리는 refs/heads/브랜치파일을 가리키고 있고, 이 브랜치 파일은 최신 커밋을 가리키게 됩니다. 만약 master 브랜치에서 feature라는 새로운 브랜치를 생성하게 되면, refs/heads/feature 라는 파일이 생성되고, 이 feature 브랜치로 체크아웃 하게 되면 HEAD는 refs/heads/feature 파일을 가리키게 됩니다. reset의 원리 만약 master 브랜치에서 git reset --hard 명령어를 입력하게 되면..