라벨이 BlackSmith인 게시물 표시

Git 시작하기 18 (Branch main 수정)

이미지
사용 버전: Atom 1.57.0 x64, git 2.31.1.windows.1 운영체제: Windows 10 Home x64 20H2 ​ 기획: Atom으로 Git 사용하기. ​ ​ github가 예전에는 master branch가 default 설정으로 만들어졌는데, 현재는 main branch로 만들어집니다. ​ atom에서 만들 시에는 master가 적용되므로 branch가 새로 만들어지게 되는데, atom에 연결하기 전에 main으로 변경해서 연동하도록 합니다. git init을 해줍니다. 그러면 .git이라는 폴더가 생성됩니다. ​ ​ ​ git branch -M main을 적어줍니다. 뒤가 master에서 main으로 변경된 것이 보입니다. 이제 커밋을 하시거나, git remote를 추가해 주시면 됩니다. ​ atom을 이용하시려면, 이 상태에서 atom으로 해당 폴더를 엽니다. 그리고 커밋을 하면, 아래에 main branch로 만들어진 것을 확인할 수 있습니다. 끝. 카테고리: Git, BlackSmith

Tensorflow 시작하기 12 (성능 향상-히든 레이어)

이미지
사용 버전: Python 3.7.6, Tensorflow 2.1.0 ​ 기획: MNIST 데이터 셋을 이용하여, 손글씨 숫자를 맞추는 AI(인공지능) 만들기 ​ 이번 시간에는 간단한 방법으로 성능을 향상시키는 방법에 대해서 알아보겠습니다. ​ 아래는 성능 향상 전 그래프입니다. ​ ​ 숨겨진 층(Hidden layer)를 추가하겠습니다. ​ ​ Dropout이라는 기능도 사용해 줍시다. 학습 데이터 일부분을 누락시켜 학습을 시킵니다. ​ ​ 재생산성을 위해 인자를 고정해 줍시다. BatchNormalization도 해줍시다. ​ ​ 아무리 해도 성능이 좋아질 기미가 안 보이네요. 아무래도 데이터 전처리가 이상한가 봅니다. 전처리를 10에서 100으로 변경해 줍니다. 아무래도 잡음까지 같이 숫자로 인식되나 봅니다. ​ ​ seed를 아무리 고정해도 값이 동일하게 안 나오네요.... 아무튼 운이 좋게 5 개나 맞는 경우가 생겼습니다. 사실 검정 바탕 7과 9는 맞출 수가 없습니다. 학습 데이터에는 저런 검은색 바탕을 가진 데이터는 없었거든요. 일부러 한 번 넣어봤습니다. ​ ​ 처음의 2와 3은 당연히 맞출 줄 알았습니다. 그런데 생각만큼 잘 안되네요. 이렇게 성능 향상을 시켜보았습니다. ​ 전처리의 중요성을 다시 한번 알게 되었고, hidden layer의 효과 역시 한 번에 알 수 있었습니다. ​ 이제 만든 모델을 저장하는 방법에 대해서 알아보겠습니다. ​ 끝. ​ 코드: https://github.com/shwoghk14/mnist_tensorflow 카테고리: Tensorflow, BlackSmith

Tensorflow 시작하기 11 (성능 향상-셔플 사용)

이미지
사용 버전: Python 3.7.6, Tensorflow 2.1.0 ​ 기획: MNIST 데이터 셋을 이용하여, 손글씨 숫자를 맞추는 AI(인공지능) 만들기 ​ 이번 시간에는 간단한 방법으로 성능을 향상시키는 방법을 알아보겠습니다. ​ 아래는 성능 향상 전 그래프입니다. ​ ​ 셔플(Shuffle)을 적용해 보겠습니다. shuffle method를 사용합니다. 괄호 안에 숫자는 전체 데이터보다 큰 숫자를 적어줘야 합니다. ​ ​ ​ batch 256 ​ ​ batch 128 ​ ​ batch 1024 ​ ​ batch 32 ​ 별 효과를 못 얻었네요. ​ 계속 진행해보겠습니다. ​ ​ 끝. ​ 코드: https://github.com/shwoghk14/mnist_tensorflow 카테고리: Tensorflow, BlackSmith

Tensorflow 시작하기 10 (성능 향상-배치 사용)

이미지
사용 버전: Python 3.7.6, Tensorflow 2.1.0 ​ 기획: MNIST 데이터 셋을 이용하여, 손글씨 숫자를 맞추는 AI(인공지능) 만들기 ​ 이번 시간에는 간단한 방법으로 성능을 향상시키는 방법을 알아보겠습니다. ​ 아래는 성능 향상하기 전 그래프입니다. ​ ​ 아래는 시작하기 9 그래프입니다. ​ ​ 배치(Batch)를 적용해보겠습니다. 배치를 적용하기 전, tensorflow dataset으로 만들어줍시다. ​ tensorflow dataset으로 만드는 이유는 Batch를 쉽게 사용하기 위해서입니다. ​ batch 크기는 보통 2의 배수로 많이 사용합니다. 2, 4, 8, 16, 32, ... ​ batch는 아래와 같이 사용합니다. ​ ​ batch size 32 ​ ​ ​ batch size 128 ​ ​ batch size 256 ​ ​ batch size 512 ​ ​ 별로 성능이 나아지지 않았네요. ​ 계속 성능 향상을 향해 가보겠습니다. ​ 끝. ​ 코드: https://github.com/shwoghk14/mnist_tensorflow 카테고리: Tensorflow, BlackSmith

Tensorflow 시작하기 9 (성능 향상-학습 반복량 증가)

이미지
사용 버전: Python 3.7.6, Tensorflow 2.1.0 ​ 기획: MNIST 데이터 셋을 이용하여, 손글씨 숫자를 맞추는 AI(인공지능) 만들기 ​ 이번 시간에는 간단한 방법으로 성능을 향상시키는 방법에 대해서 알아보겠습니다. ​ 아래는 성능 향상하기 전 그래프입니다. ​ ​ 학습 반복량(epoch)을 조절해보겠습니다. ​ epoch를 5에서 23으로 증가했습니다. 맞던 3 도 안 맞게 되었습니다. ​epoch를 50으로 증가해보겠습니다. 3과 5를 맞췄네요. 조금 괜찮아졌네요. 한 번 200 번 반복해보겠습니다. 3과 5의 확률이 더 높아졌네요. 만약 학습 데이터의 loss, accuracy가 test의 loss, accuracy와 차이가 많이 난다면, 과적합(overfitting)을 의심해봐야 합니다. ​ 계속 성능 향상을 진행하겠습니다. ​ 끝. ​ 코드: https://github.com/shwoghk14/mnist_tensorflow 카테고리: Tensorflow, BlackSmith

Tensorflow 시작하기 8 (성능 향상-학습 데이터 증가)

이미지
사용 버전: Python 3.7.6, Tensorflow 2.1.0 ​ 기획: MNIST 데이터 셋을 이용하여, 손글씨 숫자를 맞추는 AI(인공지능) 만들기 ​ 이번 시간에는 간단한 방법으로 성능을 향상시키는 방법을 알아보겠습니다. 그전에 몇 프로의 순위로 뽑힌 건지 확인해 봅시다. ​ 함수를 만듭니다. ​ ​ 그래프를 그려줍니다. ​ ​ 실행해 줍니다. 예측한 것은 검은색, 정답은 빨간색 그래프입니다. 그리고 그림 밑의 빨간색 주석이 달린 것이 예측과 정답이 맞는 그림입니다. ​ ​ 이제, 우리는 여기에 약간의 코드를 수정하여 성능을 향상시켜보겠습니다. 요즘은 random forest나 ensemble 기법을 많이 사용하는 것 같습니다. 저는 아직 공부를 못해서 기초적인 기법에 대해서 다루겠습니다. ​ 성능을 향상시키는 방법으로는 크게 5 가지 정도가 있습니다. 1. 학습 데이터양을 늘린다. 2. 학습 반복량을 증가한다. 3. 배치를 사용한다. 4. 셔플을 사용한다. 5. 히든 레이어를 추가한다. ​ ​ 학습 데이터의 양, 학습 반복량, 배치, 셔플, 히든 레이어 추가에 대해서 다루겠습니다. ​ - 학습 데이터의 양이 늘어나면, 학습을 하는데 좀 더 많은 경우를 볼 수 있어서 성능이 향상됩니다. - 학습 반복량(epoch)을 증가해 주면 학습을 반복적으로 하게 되어, 성능이 좋아집니다. 하지만, 너무 오래 반복하게 되면, 본 것만 맞추게 되어 성능이 떨어집니다. - 배치(batch)를 사용하면, 전체 데이터를 가지고 학습을 진행하는 것이 아니라, 정해진 크기들끼리의 기울기 값을 사용하여, 전체 기울기를 찾아가게 됩니다. - 셔플(shuffle)을 사용하게 되면, 학습 데이터 순서에 인공지능이 최적화되는 것을 방지해 줍니다. - 히든 레이어를 추가하게 되면, 성능이 향상될 수 있습니다. 다만, 너무 많은 층을 사용하면, 오히려 성능이 저하됩니다. ​ ​ 학습 데이터의 양을 늘려보겠습니다. 현재 새로운 데이터를 만드는 것은 시...