sudo apt -y install language-pack-ko fonts-noto-cjk fonts-noto-cjk-extra msttcorefonts
sudo wget -O /usr/share/fonts/truetype/D2Coding.zip https://github.com/naver/d2codingfont/releases/download/VER1.3.2/D2Coding-Ver1.3.2-20180524.zip
sudo unzip /usr/share/fonts/truetype/D2Coding.zip -d /usr/share/fonts/truetype/
sudo rm /usr/share/fonts/truetype/D2Coding.zip
# https://github.com/kelvinks/D2Coding_Nerd
sudo mkdir /usr/share/fonts/truetype/D2CodingNerd
sudo wget -O /usr/share/fonts/truetype/D2CodingNerd/D2CodingNerd.ttf https://github.com/kelvinks/D2Coding_Nerd/raw/master/D2Coding%20v.1.3.2%20Nerd%20Font%20Complete.ttf
sudo mkdir /usr/share/fonts/truetype/ARIALUNI
sudo wget -O /usr/share/fonts/truetype/ARIALUNI/ARIALUNI.TTF https://raw.githubusercontent.com/dymaxionkim/CREO3_STARTUP/master/font/ARIALUNI.TTF
sudo mkdir /usr/share/fonts/truetype/BickhamScriptPro
sudo wget -O /usr/share/fonts/truetype/BickhamScriptPro/BickhamScriptPro-Bold.otf http://dymaxionkim.iptime.org:3100/dymaxionkim/ROBOT/raw/branch/master/Fonts/BickhamScriptPro-Bold.otf
sudo wget -O /usr/share/fonts/truetype/BickhamScriptPro/BickhamScriptPro-Regular.otf http://dymaxionkim.iptime.org:3100/dymaxionkim/ROBOT/raw/branch/master/Fonts/BickhamScriptPro-Regular.otf
sudo wget -O /usr/share/fonts/truetype/BickhamScriptPro/BickhamScriptPro-Semibold.otf http://dymaxionkim.iptime.org:3100/dymaxionkim/ROBOT/raw/branch/master/Fonts/BickhamScriptPro-Semibold.otf
sudo fc-cache -f -v
sudo apt -y install gnome-font-viewer
์ ์ฒด ๊ธ
- Ubuntu ํฐํธ ์ค์น 2020.06.05
- Ubuntu์ VSCode ์ค์น 2020.06.05
- Ubuntu์ nimf ํ๊ธ์ ๋ ฅ๊ธฐ ์ค์นํ๊ธฐ 2020.06.05
- Ubnutu apt update์ Certificate verification failed ์๋ฌ ์ฒ๋ฆฌ 2020.06.03
- model.fit์ history๋ก ๋ฐ์ loss, acc๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ 2020.05.15
- ๋ฅ๋ฌ๋์ผ๋ก ๊ณ ์์ด์ ๊ฐ๋ฅผ ๊ตฌ๋ถํด๋ณด์. 2019.12.20 8
- Tensorflow 2.0 ๋ณ๊ฒฝ๋ ์ 2019.12.20 2
- GTK ํฐ๋ฏธ๋ ํ ๋ง ๋ณ๊ฒฝ 2019.11.25
- Linux์์ ์์ถํ์ผ ๋ด ํ์ผ์ด๋ฆ ๊นจ์ง๋ 2019.11.22
- NVIDIA GPU monitoring 2019.11.05
Ubuntu ํฐํธ ์ค์น
Ubuntu์ VSCode ์ค์น
sudo curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
sudo apt -y install apt-transport-https
sudo apt -y update
sudo apt -y install code
Ubuntu์ nimf ํ๊ธ์ ๋ ฅ๊ธฐ ์ค์นํ๊ธฐ
wget -O - http://apt.hamonikr.org/hamonikr.key | sudo apt-key add -
sudo bash -c "echo 'deb https://apt.hamonikr.org jin main upstream' > /etc/apt/sources.list.d/hamonikr-jin.list"
sudo bash -c "echo 'deb-src https://apt.hamonikr.org jin main upstream' >> /etc/apt/sources.list.d/hamonikr-jin.list"
sudo apt update
# ํ๊ธ๋ง ์ฌ์ฉํ๊ณ ์ถ์๊ฒฝ์ฐ
sudo apt install nimf nimf-libhangul
# ์ผ๋ณธ์ด, ์ค๊ตญ์ด ๋ฑ ๋ค๋ฅธ์ธ์ด๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์๊ฒฝ์ฐ
sudo apt install libnimf1 nimf nimf-anthy nimf-dev nimf-libhangul nimf-m17n nimf-rime
im-config -n nimf
sudo reboot now
Ubnutu apt update์ Certificate verification failed ์๋ฌ ์ฒ๋ฆฌ
echo -n | openssl s_client -connect ์ ์ํ๊ณ ์ํ๋์ฃผ์:443 | \
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | \
sudo tee -a '/usr/local/share/ca-certificates/download_01_org.crt'
sudo update-ca-certificates
model.fit์ history๋ก ๋ฐ์ loss, acc๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ
# summarize history for accuracy
plt.plot(history.history['accuracy'])
plt.plot(history.history['val_accuracy'])
plt.title('model accuracy')
plt.ylabel('accuracy')
plt.xlabel('epoch')
plt.legend(['train', 'test'], loc='upper left')
plt.show()
# summarize history for loss
plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train', 'test'], loc='upper left')
plt.show()
๋ฅ๋ฌ๋์ผ๋ก ๊ณ ์์ด์ ๊ฐ๋ฅผ ๊ตฌ๋ถํด๋ณด์.
๋ค๋ฅธ AI์๋ ๋ค๋ฅด๊ฒ, ๋น์ ๊ณผ ์ผ๋ถ ์ธ์ด์ชฝ์ ํค๋นํ GPU์๋ฒ ์ฌ์ฉ์ ์๊ตฌํด์,
AI๋ฅผ ํ์ตํ๋ค๊ฐ, ์กฐ๊ธ๋ง ๊น์ด ๋ค์ด๊ฐ๋ฉด ๋ ธํธ๋ถ์ผ๋ก๋ ์ด๋ฆผ๋ ์๋ ์ง๊ฒฝ์ ์ด๋ฅด๊ฒ ๋ฉ๋๋ค.
์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐ๋ถ์๊ณผ๋ ๋ฌ๋ฆฌ, ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ ์ด๋ฏธ์ง ํ์ฅ๋ง ํ๋๋ผ๋ ๋ง์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ด์
์๋์ ์ผ๋ก ํ์ต ๋ฐ์ดํฐ์ ์ค์ผ์ผ์ด ํฌ๊ณ , ํ์ต์ ํ์ํ ์ฐ์ฐ์ ๊ท๋ชจ๊ฐ ์ด๋ง์ด๋ง ํฉ๋๋ค.
[์ฌ์ ์กฐ๊ฑด]
๊ฐ๋จํ ํ์ด์ฌ,
์ฃผํผํฐ ๋ ธํธ๋ถ ์ฌ์ ์ค์น
์ํํธํค์ ์ํธ๋ฅผ ๋์์ ๋๋ฅผ ์ ์๋ ๋ ์.
์...์ด์ ํ๋ฒ ํด๋ณด์์ฃ .
์ด์ ๋ถํฐ์ ๋ช ๋ น์ด๋ ์ฃผํผํฐ ๋ ธํธ๋ถ์ ์คํํ ์ํ์์, ๋ธ๋ผ์ฐ์ ์์ ์ ๋ ฅํ๋ ๋ช ๋ น์ด ์ ๋๋ค.
0. ๊ฐ, ๊ณ ์์ด ๋ฐ์ดํฐ ์ค๋น
Datasets : https://www.kaggle.com/c/dogs-vs-cats/data
์ฒจ๋ถ ํ์ผ์ ๋ค์ด๋ฐ์์ ์๋ ๊ตฌ์กฐ๋ก ์ ์ฅ์ ํฉ๋๋ค.
(jupyter notebookํ์ผ๊ณผ ๊ฐ์ ๊ฒฝ๋ก์ ์ ์ฅํ์ธ์)
-- data ---- train (ํ์ต์ ์ํ ๊ณ ์์ด, ๊ฐ์ฌ์ง 25,000์ฅ)
|__ test1 (ํ ์คํธ๋ฅผ ์ํ ๊ณ ์์ด, ๊ฐ ์ฌ์ง 25,000์ฅ)
1. ์ฐ์ ํ์ํ ํจํค์ง๋ฅผ ์ค์น ํฉ๋๋ค.
keras์ ๋ํ ๋ด์ฉ์ ๋ณธ ๊ฒ์ํ ์ ๋ค๋ฅธ๊ธ์ ์ฝ์ด๋ณด๋ฉด ๊ฐ๋ต์ ์ผ๋ก ๋์ต๋๋ค.
keras๋ ๋ฐฑ์๋๋ก tensorflow๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, tensorflow๊น์ง ์๋์ผ๋ก ์ค์น๊ฐ ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ํ์ต๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐํ๋ ์(๋ฐ์ดํฐ์ ๊ตฌ์กฐ๊ฐ ์์ ๊ฐ์ ํ ํํ๋ก ๊ตฌ์ฑ)ํํ๋ก ๋ณํํ๊ณ ์ฐ์ฐํ๊ธฐ ์ํ pandas๊ฐ ์ค์น ๋์ด์ผ ํ๊ณ ,
๋ฐฐ์ด ์ฐ์ฐ์ ์ํ numpy, ์ด๋ฏธ์ง ์ฒ๋ฆฌ๋ฅผ ์ํ image ํจํค์ง, ๊ทธ๋ฆฌ๊ณ ๋งคํธ๋ฆญ์ค๋ฅผ ๊ทธ๋ํ๋ก ๋ํ๋ด๊ธฐ ์ํ matplotlib,
๋ง์ง๋ง์ผ๋ก ์์น์ฐ์ฐ์ ์ํ ํจํค์ง์ธ scikit-learn์ ์ค์น ํฉ๋๋ค.
2. warning ์ถ๋ ฅ off
์ฃผํผํฐ ๋ ธํธ๋ถ ์ ์คํ์ ์ฃผํฉ์์ผ๋ก warning์ด ๋ง์ด ๋จ๋๋ฐ, ๋ณด๊ธฐ ์ซ์ผ๋ ์ถ๋ ฅํ์ง ๋ง๋ผ๊ณ ํฉ๋๋ค.
3. ํ์ํ ํจํค์ง import
๋ณธ ์๊ณ ๋ฆฌ์ฆ ์คํ์ ํ์ํ ํจํค์ง๋ค์ importํ๊ณ ,
0๋ฒ์์ ์์ถ ํผ ๋ฐ์ดํฐ๊ฐ ์ ์ ์ฅ ๋์ด ์๋์ง ํ์ธ ํฉ๋๋ค.
4. ๊ธ๋ก๋ฒ ๋ณ์๋ฅผ ์ ์ธ ํฉ๋๋ค.
์์ ์์ถ ํ์ด๋์ ์ด๋ฏธ์ง์ ๊ฐ๋กํฌ๊ธฐ, ์ธ๋กํฌ๊ธฐ, ์ฌ์ด์ฆ(128x128)์
์ฑ๋(์นผ๋ผ ์ฌ์์ด๋ฏ๋กR, G, B์ธ๊ฐ)์ ์ ์ ํด ๋์ต๋๋ค.
๋์ค์ convolution์ฐ์ฐ ์ channel์ ๋ณด๊ฐ ํ์ํ๋ฏ๋ก, ๋ฏธ๋ฆฌ ์ ์ํด ๋์ต๋๋ค.
5. ํ์ผ๋ช ๊ณผ ์ ๋ต ์ค์
์์ถ ํผ ๋๋ ํ ๋ฆฌ ์ค, train๋๋ ํ ๋ฆฌ์๋ dogxxx.jpg, catxxx.jpg๋ฑ, ๊ฐ์ ๊ณ ์์ด๋ฅผ ํ์ผ ์ด๋ฆ์ผ๋ก ๊ตฌ๋ถ์ง๋๋ก
ํ์ผ์ด ์ ์ฅ๋์ด ์์ต๋๋ค.
์ด๋ฅผ ๊ตฌ๋ถํ์ฌ ๊ฐ์ ํด๋น๋๋ ํ์ผ๋ช ๊ณผ ์ ๋ต('๊ฐ', 1)์, ๊ทธ๋ฆฌ๊ณ ๊ณ ์์ด์ ํด๋น๋๋ ํ์ผ๋ช ๊ณผ ์ ๋ต('๊ณ ์์ด', 0)์
dataframe์ ์ ์ฅํด ๋์ต๋๋ค.
6. ์ ์ฅ์ด ์ ๋์ด ์๋์ง ํ์ธํด ๋ด ๋๋ค.
๋ฐ์ดํฐ ์ ์ ์ ์ผ ์ 5๊ฐ์ ์ ์ผ ๋ค 5๊ฐ๋ฅผ ์ํ๋ง ํด์ ์ดํด๋ด ๋๋ค.
ํ์ผ ์ด๋ฆ์ด ๊ณ ์์ด๋ก ์์๋๊ฑด category๊ฐ 0์ผ๋ก,
ํ์ผ ์ด๋ฆ์ด dog์ผ๋ก ์์๋๋ ํ์ผ์ category๊ฐ 1๋ก ์ ์ ์ฅ์ด ๋์ด ์๊ตฐ์. :-)
7. ๋ฐ์ดํฐ balanceํ์ธ.
๋ถ๋ฅ ๋ฌธ์ ์ด ์์ด์, ๊ฐ category๋ณ ๋ฐ์ดํฐ๊ฐ ๊ณ ๋ฃจ ๋ถํฌ๊ฐ ๋์ด ์์ด์ผ ํ์ต์ด ์ ๋ฉ๋๋ค.
์ฆ, ๋ฐ์ดํฐ ๋ด์ ๊ฐ์ ๊ณ ์์ด๊ฐ ๊ท ์ผํ๊ฒ ๋ถํฌ๊ฐ ๋์ด ์๋์ง ํ์ธ์ ํฉ๋๋ค.
๋ณด๋๊น, ๊ณ ๋ฅด๊ฐ ์ ๋ถํฌ๊ฐ ๋์ด ์๋๊ฑฐ ๊ฐ๋ค์.
8. Sample๋ฐ์ดํฐ ํ์ธ
๋ฐ์ดํฐ ๋๋ ํ ๋ฆฌ์ค ์์๋ก ํ๋๋ฅผ ๋ฝ์์ ํ์ธ ํฉ๋๋ค.
์๋ฒ ...์๋, ๊ฐ๊ฐ ์ ํ์ ๋๋๊ตฐ์.
9. ์ ๊ฒฝ๋ง ๋ชจ๋ธ ๊ตฌ์ฑ
๋ชจ๋ธ ๊ตฌ์ฑ์...๊ธฐ๋ณธ์ ์ธ ๋ฃฐ์ด ์๊ธด ํ์ง๋ง, ์ฌ๋ฌ๋ฒ ๊ตฌ์กฐ๋ฅผ ๋ฐ๊ฟ๊ฐ๋ฉฐ,
์ ๋ง์ถ๋ ๋ชจ๋ธ์ด ๋์ฌ๋๊น์ง ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝ์ํค๋ ๊ฒ ์ ๋๋ค.
๋ฌผ๋ก , ํ๋ฅญํ์ ์ํ๋ค์ด ๋ฏธ๋ฆฌ ๋ค ํด๋ณด๊ณ ์ ๋๋ ๊ตฌ์กฐ๋ฅผ ๊ณต๊ฐํด ๋์๊ฑธ ๊ฐ์ ธ๋ค ์ฐ๋๊ฒ ์ ์ผ ์ข์ต๋๋ค.
์ฐ๋ฆฌ์๊ฒ ์ข์ ๊ตฌ์กฐ๋ฅผ ์ฐพ๊ธฐ ์ํ 100๋์ด์์ GPU์๋ฒ๋ฅผ ๊ฐ์ง ์ฐ๊ตฌ์ค์ด ์๊ธฐ ๋๋ฌธ์ด์ฃ .
10. ์ ๊ฒฝ๋ง ๊ตฌ์กฐ๋ฅผ ์ดํด๋ด ๋๋ค.
์๋์ ๊ฐ์ ๊ตฌ์กฐ๋ก ์๊ฒผ๋๋ฐ, ์ฝ ์ฒ์ด๋ฐฑ๋ง๊ฐ์ ํ๋ผ๋ฏธํธ๋ฅผ ํ์ตํด์ผ ํ๋๊ตฐ์.
ํ์ต๋ฐ์ดํฐ(๊ฐ, ๊ณ ์์ด์ฌ์ง)์ด ์ ์ผ ์๋ก ๋ค์ด์์ ์ ์ผ ์๋๋ก ๋๊ฐ๋ ๊ตฌ์กฐ ์ ๋๋ค.
์ ์ผ ์ฒ์ conv2d layer์ shape๋ฅผ ๋ณด๋ฉด (None, 126, 126, 32) ์ด๋ ๊ฒ ๋์ด ์๋๋ฐ,
๊ฐ์ด๋ฐ 126, 126 ์ซ์ ๋๊ฐ๊ฐ ๋ฐ๋ก ์ ๋ ฅ๋๋ ๊ฐ, ๊ณ ์์ด ์ฌ์ง์ ๊ฐ๋ก, ์ธ๋ก ํฌ๊ธฐ ์ ๋๋ค.
์ ์ผ ์๋ Dense Layer์ ๋ณด๋ฉด shape์ ์ซ์ 2๊ฐ ์๋๋ฐ, ์ด๊ฒ ๋ฐ๋ก ๊ฐ๋ ๊ณ ์์ด๋ ํ๋ ๋๊ฐ์ง ์ผ์ด์ค๊ฐ
์๊ธฐ ๋๋ฌธ์ shape๊ฐ 2๋ก ๋ ๊ฒ ์ ๋๋ค.
11. ์ฝ๋ฐฑ ์ ์
์..์ฝ๋ฐฑ์ ๋ค ์์ค๊ฑฐ๊ณ ...
์ฐ์ ์กฐ๊ธฐ์ข ๋ฃ(Early Stopping)์ ํ์ต์จ ํํฅ์กฐ์ ์ ์ํด ๋ ์ฝ๋ฐฑ ํด๋์ค๋ฅผ importํฉ๋๋ค.
12. Early Stopping ์ ์
Early Stopping์ด ๋ญ๋ ํ๋ฉด...
์ ์ฒด ๊ฐ, ๊ณ ์์ด ๋ฐ์ดํฐ๊ฐ์ง๊ณ ์กฐ๊ธ์ฉ ๋๋ ์ ์ฌ๋ฌ์ฐจ๋ก ํ์ต์ ํ๋๋ฐ,
์ ํ์ต๋๋ค๊ฐ ์ด๋์์ ์ง๋๋ฉด ์ ํ๋๊ฐ ์คํ๋ ค ๋จ์ด์ง๋ case๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด๋ 10๋ฒ๊น์ง ์ฐธ๋ค๊ฐ, 10๋ฒ ์ง๋์๋ ๊ณ์ ๋จ์ด์ง๋ฉด ๊ณ ๋ง ํ์ตํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ด๋ผ๋ ๋ง ์ ๋๋ค.
13. Learning Rate ์กฐ์ ์ ์
์ด ํด๋์ค๋ ํ์ตํ๋ ๋์ ์ ํ๋๋ฅผ ์ ๊ฐ์ํ๊ณ ์๋ค๊ฐ ์ด๋ ๊ธฐ์ค์ด ๋๋ฉด ํ์ต์จ์ ์กฐ์ ํด์ฃผ๋ ํด๋์ค ์ ๋๋ค.
14. callback ์ค์
์์ ์ ์ํ ๋ ์ฝ๋ฐฑ ํด๋์ค๋ฅผ callbacks์ ๋ด์ ๋์ต๋๋ค.
15. ๊ฐ, ๊ณ ์์ด๋ฅผ string์ผ๋ก ๋ณํ
์๊น ํ์ผ์ด๋ฆ๊ณผ ๊ฐ์ธ์ง ๊ณ ์์ด ์ธ์ง๋ฅผ ์ ์ฅํด๋์ dataframe์์
category๋ฅผ ๊ฐ์ธ ๊ฒฝ์ฐ 1๋ก, ๊ณ ์์ด ์ธ ๊ฒฝ์ฐ 0์ผ๋ก ๋ณ๊ฒฝํด ์ค๋๋ค.
๋์ค์ one-hot ์ธ์ฝ๋ฉ์ผ๋ก ๋ณํ์ ํ๊ธฐ ์ํด์ ์ ๋๋ค.
16. train-validation ๋ฐ์ดํฐ ๋ถ๋ฆฌ
์ด์ , train๋ฐ์ดํฐ์ค 20%๋ฅผ ์ชผ๊ฐ์ ํ์ต์ค ํ๋ผ๋ฏธํฐ ๊ฒ์ฆ์ ์ํ validation์ ์ ๋ง๋ จํด ๋์ต๋๋ค.
17. train๋ฐ์ดํฐ์ ๋ถํฌ ํ์ธ
train๋ฐ์ดํฐ์ ์กด์ฌํ๋ ๊ฐ์ ๊ณ ์์ด ์๋ฅผ ๊ทธ๋ํ๋ก ๊ทธ๋ ค ๋ด ๋๋ค.
18. validation ๋ถํฌ ํ์ธ
์๊น ์๋ผ๋ธ 20%์ ๋ฐ์ดํฐ์๋ ๊ฐ์ ๊ณ ์์ด์ ๋ถํฌ๋ฅผ ํ์ธ ํฉ๋๋ค.
19. ํ์ต, ๊ฒ์ฆ๋ฐ์ดํฐ์ ํ์ธ
ํ์ต๋ฐ์ดํฐ ๋ฐ validation์ ํ์์ ํ์ธํ๊ณ ,
ํ๋ฒ์ ํ์ตํ batch์ size๋ฅผ ์ค์ ํฉ๋๋ค.
20. ํ์ต๋ฐ์ดํฐ ๋ปฅํ๊ธฐ
์์๋ค ์ํผ ํ์ต์ ๋ฐ์ดํฐ๊ฐ ๋ง์์๋ก ์ ๋ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค.
ํ์ต๋ฐ์ดํฐ๋ฅผ augmentationํด์ ์๋ฅผ ๋๋ฆฝ๋๋ค.
๋ถํ๋ฆฌ๊ธฐ๋ ์ด๋ฏธ์ง๋ฅผ ์ฝ๊ฐ ํ์ ์ํค๊ฑฐ๋, ์ค์ ํ๊ฑฐ๋, ์ํ/์ข์ฐ ๋ฐ์ ์ ์ํค๋ ๋ฐฉ๋ฒ์ผ๋ก ๋๋ฆฝ๋๋ค.
21. Validation๋ฐ์ดํฐ ๋ปฅํ๊ธฐ
validation์ด๋ฏธ์ง๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์์ ์ ํด์ค๋๋ค.
22. ์ํ ํ์ธ
์์ ๋ฐ์ดํฐ ๋ถํ๋ฆฌ๊ธฐ๊ฐ ์ ๋์๋์ง ํ์ธํ๊ธฐ ์ํ ๋ถํ๋ฆฌ๊ธฐ๋ฅผ ์ํํฉ๋๋ค.
23. ์ด๋ฏธ์ง ํ์ธ
์์ ๋ ์ด๋ฏธ์ง๋ฅผ ํ์ธ ํด ๋ด ๋๋ค.
์์ธํ ๋ณด๋ฉด ๊ฐ์ ๊ฐ์ธ๋ฐ, ์ข์ฐ ๋ฐ์ ์ด๋ ์ค์ด ๋์ด ์๋๊ฑธ ๋ณผ ์ ์์ฃ .
24. ํ์ต์์
์, ์ด์ ํ์ต์ ํด๋ด ์๋ค.
GPU์๋ฒ์์ ํ Epoch๋น ๋๋ต 5๋ถ์ ๋๊ฐ ๊ฑธ๋ฆฐ๊ฑฐ ๊ฐ์ต๋๋ค.
ํ์ฌ์์ ์ง๊ธ๋ ๋ ธํธ๋ถ์ผ๋ก๋ 15๋ถ์์ 30๋ถ ๊ฑธ๋ฆฝ๋๋ค. (๊ณฑํ๊ธฐ 50๋ฒ์ ํด์ผ ํจ)
ํด๊ฐ ๊ฐ๋ ๊ฑธ์ด๋๊ณ ๊ฐ์๊ธธ...
ํ์ต์ด ์ ๋์๊ณ 31๋ฒ์งธ Epoch์์ ReduceLROnPlateau์ฝ๋ฐฑ์ด ์ผ์ด๋ฌ๊ตฐ์.
1e-50 ํ์ต์จ์ ๋๋ฌํ ๋ชจ์์ ๋๋ค.
25. ๋ชจ๋ธ ์ ์ฅ
ํ์ต์ด ๋๋๋ฉด, ์ ์ผ๋จผ์ ํ ์ผ์ ๋ชจ๋ธ์ ์ ์ฅํ๋ ๊ฒ์ ๋๋ค.
๋ชจ๋ธ์ ์ ์ฅํด ๋์ผ๋ฉด, ๋ค์์ 24๋ฒ์ ์ค๋์ค๋ ๊ฑธ๋ฆฌ๋ ํ์ต ๋จ๊ณ๋ฅผ ์๋ตํ ์ ์์ต๋๋ค.
26. ํ์ต ๋ด์ฉ ํ์ธ
์ด์ ๊ทธ๋์ ํ์ต์ํจ ๋ด์ฉ์ ํ์ธํด๋ด์ผ๊ฒ ์ฃ .
train loss, validation loss์ train accuracy, validation accuracy ๊ทธ๋ํ๋ฅผ ๊ทธ๋ ค๋ด ๋๋ค.
27. ๊ทธ๋ํ ํ์ธ
์์ฃผ ์์๊ฒ ์ ํ์ธ ๋๊ฑฐ ๊ฐ์ต๋๋ค.
ํ๋์ ๊ทธ๋ํ๋ ํ์ตํ ๋์ ๊ทธ๋ํ๊ณ , ๋นจ๊ฐ์์ validation ๊ทธ๋ํ ์ ๋๋ค.
์ฒซ๋ฒ์งธ ๊ทธ๋ํ๋ฅผ ๋ณด๋ฉด ์ฒ์ ํ์ต์์ ์๋ ์ค๋ต์จ์ด ๋๋ค๊ฐ, ์ ์ ํ์ต์ ์ง์ํ ์๋ก
์ค๋ต์ด ๋ฎ์์ง์ฃ . ๊ทธ๋ฆฌ๊ณ validation๋ ์ ๋ฎ์์ง๊ณ ์์ต๋๋ค.
๋๋ฒ์งธ ๊ทธ๋ํ๋ ์ ํ๋์ธ๋ฐ,
๋ง์ฐฌ๊ฐ์ง๋ก ์ฒ์ ํ์ต ์์ ์๋ ์ ํ๋๊ฐ ๋ฎ๋ค๊ฐ ์ ์ ์ ๋ง์ถฐ๊ฐ๋๊ฑธ ๋ณผ ์ ์์ต๋๋ค.
์ค๊ฐ์ค๊ฐ ํ๋ ๋ถ๋ถ์ ์๋ง๋, ๊ฐ๊ฐ์ ๊ณ ์์ด๋ ๊ณ ์์ด์ง์ ํ๋ ๊ฐ๊ฐ ์์ฌ์๋๊ฑฐ ๊ฐ์ต๋๋ค.
๊ทธ๋๋ train, validation์ ์ฐจ์ด๊ฐ ํฌ์ง ์์์ overfitting์ด ์ผ์ด๋์ง ์์๊ฒ ๊ฐ๋ค์.
ํ์ต๋ ์ ๋์๊ตฌ์.
28. Test
์ด์ ํ์ต๋ ๋ชจ๋ธ์ ๊ฐ์ง๊ณ test๋ฐ์ดํฐ๋ฅผ ํ๋ฒ ๋ง์ถฐ๋ด ์๋ค.
test1 ๋๋ ํ ๋ฆฌ์ ์๋ ๊ฐ์ ๊ณ ์์ด ์ฌ์ง์ผ๋ก ํ๋ฒ ํ๊ฐ๋ฅผ ํด ๋ด ๋๋ค.
29. ํ๊ฐ ๋ฐ์ดํฐ ์ค๋น
ํ ์คํธ ๋ฐ์ดํฐ์ validation๋ฐ์ดํฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฐ์ดํฐ๋ฅผ ์ค๋น ํฉ๋๋ค.
30. ๋ชจ๋ธ ์์ธก
์๊น ํ์ตํ ๋ชจ๋ธ๋ก, ์์์ ์์ฑํ test ์ ์ ๋ฃ์ด ๋ด ๋๋ค.
31. ํ๊ฐ ์์ฑ
prediction์ ๊ฒฐ๊ณผ๋ ๊ฐ record๋ณ, ๊ฐ์ผํ์จ ์ผ๋ง, ๊ณ ์์ด์ผ ํ์จ ์ผ๋ง ์ด๋ฐ์์ผ๋ก ๊ฒฐ๊ณผ๊ฐ ๋ด๊ฒจ์ ธ ์์ต๋๋ค.
ํธ์์ฑ๊ณผ ์ ํ๋ ๊ฒ์ฆ์ ์ํด ๊ฐ์ ๊ณ ์์ด์ผ ํ๋ฅ ์ค ๋ณด๋ค ํฐ๊ฐ์ ํด๋นํ๋ ๋ ์ด๋ธ์ ์ ํํด์ ๊ฐ์ ์นํํฉ๋๋ค.
(๊ฐ์ผ ํ์จ 0.73, ๊ณ ์์ด์ผ ํ๋ฅ 0.27์ด๋ฉด, '๊ฐ'์ label์ธ dog์ ๋ฃ์ต๋๋ค.)
32. ๋ ์ด๋ธ ๋ณํ
ํ๊ฐ๋ฅผ ์ํด์ dog, cat ์ด๋ ๊ฒ ๋ค์ด๊ฐ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ค์ 1, 0์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค.
33. ์ ๋ต๋น์จ ํ์ธ
๊ฐ์ ๊ณ ์์ด๋ฅผ ์ด๋์ ๋ ๋น์จ๋ก ์์ธกํ๋์ง ํ๋ฒ ์ดํด ๋ด ๋๋ค.
34. ์ ๋ต ํ์ธ
์์ธกํ ๊ฒฐ๊ณผ๋ฅผ ๋์ผ๋ก ํ์ธํด ๋ด ๋๋ค.
์ ๋ง์ถ๋ค์...
์ค์ ๋ก๋ ๋ ์ข์ ๋ชจ๋ธ์ ์ฐพ๊ธฐ ์ํด ์ธ๊ณ ์ ์๊ฐ(๋ช์๊ฐ, ๋ช์ผ์ฉ)์ ๋ฐ๋ณต์ ์ผ๋ก ์ฐธ์๋ด๋ฉฐ
๊ธฐ๋ค๋ฆฌ๋ ์ธ๋ด์ ์ธ์์ธ๊ฑฐ ๊ฐ์ต๋๋ค.
๋ ธํธ๋ถ์ผ๋ก ํ๋ฒ ๋๋ ค๋ณด์๋ฉด...
AWS๋ GCP๊ฐ์ ์๋น์ค๊ฐ ์ผ๋ง๋ ๊ณ ๋ง์ด์ง ๋ผ์ ๋ฆฌ๊ฒ ๋๋ผ์ค ๊ฒ๋๋ค. ^^
Tensorflow 2.0 ๋ณ๊ฒฝ๋ ์
์ด๋ฒ Tensorflow Summit 2019์์ Tensorflow 2.0 alpha๋ฒ์ ์ด ๊ณต๊ฐ ๋์๋๋ฐ์,
๊ธฐ์กด์ tensorflow๋ฅผ ์ฌ์ฉํด์ ๋ฅ๋ฌ๋์ ๊ฐ๋ฐํ๋ ์ฌ๋์ด๋ผ๋ฉด,
์ฒด๊ฐํ ์ ์๋ ํ ๋ฐ๋ ๋ถ๋ถ์ด ๋ง์ด ์์ต๋๋ค.
์ด๋ฌํ ๋ถ๋ถ์ ๋ํด ๊ฐ๋จํ ์๊ฐํ๊ณ ์ ํฉ๋๋ค.
์ฐ์ , ๊ธฐ๋ณธ์ ์ผ๋ก tensorflow์ ๋์์ ๋ํด ๊ฐ๋จํ ๋ง์๋๋ฆฌ๋ฉด,
1. ํ์ตํ ๋ฐ์ดํฐ์ ์ค๋น
2. ๋ฐ์ดํฐ์ ์ ๋ด์ Computational Graph ์ค๋น(tf.placeholder)
3. ๊ฐ์ค์น๋ ๋ฐ์ด์ด์ค๋ฅผ ๋ด์ Computational Graph ์ค๋น(tf.Variable)
4. ์์คํจ์ ์ ์
5. ์์คํจ์๋ฅผ ์ต์ํ ํด์ฃผ๋ Optimizer์ ์
6. tf.Session์ ์
7. Session๋ด์์ ํ๋ผ๋ฏธํฐ ๊ฐ ์ด๊ธฐํ(tf.global_variable_initializer())
8. ํ์ต ์ํ
9. ํ๊ฐ
10. ์์ธก
์ด๋ฌํ ๋จ๊ณ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
์ฌ๊ธฐ์ computational graph๋, ๋งคํธ๋ฆญ์ค ํํ์ ๋ฐ์ดํฐ๋ฅผ '๋ ธ๋'๋ ๊ณณ์์
๊ณ์ฐ์ ํ๋ ํํ๋ฅผ ๊ทธ๋ํ๋ก ํ์ํ ๊ฒ ์ ๋๋ค.
๋๋ฆ ํฉ๋ฆฌ์ ์ธ ๋ฐฉ์์ด๊ธด ํ์ง๋ง,
์ฌ๊ธฐ์๋ ๋งน์ ์ด ์์ต๋๋ค.
๋ฐ๋ก, define๋จ๊ณ์์๋ ์๋ฌด๊ฒ๋ ์คํ๋์ง ์๋๋ค๋ ์ ์ด์ฃ .
์๋ ์๋ฅผ ๋ณผ๊น์?
>> a = 2
>> b = 3
>> c = a + b
์ด ์์ ์์ a = 2๋ฅผ ์ ์ํ๋ ์๊ฐ
์ด๋ฏธ a๋ผ๋ ๋ณ์์๋ 2์ ๊ฐ์ด ํ ๋น์ด ๋ฉ๋๋ค.
c๋ c = a + b ๋ฅผ ์ํํ๋ ์๊ฐ ์ด๋ฏธ, c์๋ 5๋ ๊ฐ์ด ๋ค์ด๊ฐ๊ฒ ์ฃ .
๊ทธ๋ฐ๋ฐ, ์ด๋ฅผ tensorflow์ computational graph๋ก ์์ฑํ๋ฉด,
a = tf.constant(1)
b = tf.constant(2)
์ด๋ฐ์์ผ๋ก ์ ์๋ฅผ ํ์ฃ .
์ด๋ a์ ๊ฐ์ ์ฐ์ด๋ณด๋ฉด 1์ด ๋์ค์ง ์์ต๋๋ค.
๊ทธ๋ฅ 1์ด๋ ๊ฐ์ด ํ ๋น ๋ computational graph๊ฐ ํ๋ ํ์๋ ๋ฟ์ด์ฃ .
Tensor("Const:0", shape=(), dtype=int32)
tensorflow์์๋ session์ด๋๊ฑธ ์์ฑํด์ ์คํํด์ผ๋ง ํด๋น ๋๋ ์ฐ์ฐ์ด ์คํ ๋ฉ๋๋ค.
์ด๊ฒ, '์ ๊ณ'์์๋ ๋๋ฆ ํฐ ์ด์์์ต๋๋ค.
'์ง์ฐ์คํ'์ด๋ผ๊ณ ํ๋ ๋ฌธ์ ์ ๋๋ค.
์์ญ๊ณ์ ๊ณ์ธต์ ์์์ฌ๋ฆฐ ์ ๊ฒฝ๋ง์ ์คํํ ๋,
tensorflow๋ ์ด๋ฌํ computational graph๋ฅผ ์ด๊ธฐ์ ๊ตฌ์ฑํ๋๋ผ
์คํ์๋๊ฐ ์์ฒญ ๋๋ฆฌ๋ ํ์์ด ์์์ต๋๋ค.
๋ฅ๋ฌ๋ ์์ง๋์ด์ ๋ถ๋ง์ด ๊ทน์ ๋ฌํ์์์ฃ .
์ค์์ ๋ฅ๋ฌ๋์๋ ์ฌ๋ฌ ๊ณ๋ณด(?)๊ฐ ์์ต๋๋ค.
๊ตฌ๊ธ์ ํ ์ํ๋ก ํ, ํ๋์์ ์๋ ์ ์ผ๋ผ์ค ํ, ๊ทธ๋ฆฌ๊ณ ํ์ด์ค๋ถ์ ํ์ดํ ์น ํ...
์ด์ธ์๋ ์ํ์น์ MXNET๋ถํฐ MS์ CNTK๋ฑ ....
์๋ง์ ํ๊ฐ ์ค์์ ์กด์ฌ ํ๊ณ ์์ต๋๋ค.
์ด์ค ์ฃผ๋ฅ๋ ์๋ฌด๋๋ ํ ์ํ๋ก, ์ผ๋ผ์ค, ํ์ดํ ์น๊ฐ ๊ฐ์ฅ ๋ง์ ๋ฌด๋ฆผ์ ์ธ๋ ฅ์ ์ฐจ์ง ํ๊ณ ์์ต๋๋ค.
ํ ์ํ๋ก >>>>>>>>>>์ผ๋ผ์ค>>>>>>ํ์ดํ ์น >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>์ก๋ค๊ตฌ๋ฆฌ(์ก๋ค๊ตฌ๋ฆฌํ์๊ฒ ์ฃ์กํฉ๋๋ค...)
๋๋ต ๊ฐ์ธ์ ์ผ๋ก๋ ์ด๋ฐ ๋๋์ด์ง ์์๊น ํ๋ ๊ฐ์ธ์ ์ธ ์๊ฐ์ ๋๋ค.
ํ ์ํ๋ก๋....
์๋ฌด๋๋ ๋ฅ๋ฌ๋ ํ๋ ์์ํฌ์ ์ด๊ธฐ ์ฃผ๋ฅ ์ด๋ค๋ณด๋...
๊ทธ ๋น๊ธ์ ์๋ฌด๋๋ ํ์ ๋ ๋ง๊ณ , ๋น๊ธ์ ์ตํ๊ธฐ์๋ ๊ธฐ์กด ํ๋ก๊ทธ๋๋ฐ์ ํจ๋ฌ๋ค์๊ณผ ๋ง์ด ๋ฌ๋ผ์
์ตํ๊ธฐ์ ๋ง์ ์๊ฐ๊ณผ ๋ด๊ณต์ด ํ์ํ์ต๋๋ค.
์ด์ ๋ถ๋ง์ ํ์ ํ๋์์ ์๋ ๋ ๋ถํ๋ฅผ ๊ฒฐ์ ํ์ฃ . ๋ฐ๋ก ์ผ๋ผ์ค ํ ์ ๋๋ค.
์ฒ์ ๋ฅ๋ฌ๋์ ์ ๋ฌธํ๊ฑฐ๋ ๊ธฐ์กด ๋น๊ธ์ ์ตํ๋ค ์ฃผํ์ ๋ง์ ๊ฑธ๋ฆฐ ์ด๋ค๋ ์ฝ๊ฒ ์ตํ ์ ์๋,
์์ฃผ ์ฌ์ด ๋น๊ธ์ ์ฐฝ์ํฉ๋๋ค.
๋ค๋ง ์ผ๋ผ์ค๋ ๋ด๋ถ์ ์ผ๋ก๋ ๊ธฐ์กด์ ํ ์ํ๋ก, ์จ์๋ ธ, CNTK๋ฑ์ ๋น๊ธฐ๋ฅผ ๊ทธ๋๋ก ์ด์ฉํฉ๋๋ค๋ง,
์ตํ๋ ์ฌ๋์ ์ด๋ฐ๊ฑธ ์ ํ์๊ฐ ์๋ ์ ๋ฐํ ๋น๊ธ์ด์์ต๋๋ค.
ํ ์ํ๋ก์๋ ๋ณต์ก ๋ค์ํ๊ณ , ์ ๋ ฅ ๋ฐ์ดํฐ์ ์ฐจ์์ ๋ง์ถฐ์ฃผ์ด์ผ ํ๋ ๋ฑ
๊ท์ฐฎ๊ณ ์ด๋ ค์ด ์ ์ฐจ๊ฐ ์์์ง๋ง,
์ผ๋ผ์ค๋ ๊ทธ๋ฅ ํฑํฑ ์ ๊ฒฝ๋ง์ ์์๋๊ธฐ๋ง ํ๋ฉด ์๋์ผ๋ก ์์์ array์ ์ฐจ์์ ๋ง์ถฐ์ฃผ๋
์ ๋ฐํ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
์ผ๋ผ์ค๋ ๋์ค์ ๋ง์ ์ ํ์ ์ธ ์ธ๊ธฐ๋ฅผ ๋์๊ณ , ํ์ฌ๋ ๋๋ต ์ค์์์ ๋๋ฒ์งธ์ ๋ ๋๋
์ฃผ๋ฅ๋ก ๊ธ ์์น ํฉ๋๋ค.
๊ทธ๋ฐ๋ฐ!!!
ํ ์ํ๋กํ์ ์ฅ๋ก๊ฐ ์ผ๋ผ์ค์ ๋น๊ธ์ ์์ฉํ๊ธฐ๋ก ํ ๊ฒ์ ๋๋ค. ๋ฐ๋ก, tensorflow 2.0์์ ๋ง์ด์ฃ .
์ด์ , ํ ์ํ๋ก์ ํ๋ ๊ธฐ์กด์ ์ตํ๊ธฐ ํ๋ค๊ณ ์ฃผํ์ ๋ง์ ๋น ์ง๊ธฐ ์ฌ์ด ๋น๊ธ ๋์ ์,
ํ์ค์ผ๋ก Keras๋ผ๋ high level API๋ฅผ ๊ทธ๋๋ก tensorflow์์ ์ธ์ ์๊ฒ ๋ ๊ฒ์ ๋๋ค.
์๋ ์์๋ฅผ ํ๋ฒ ๋ณด์์ฃ .
๋จผ์ Tensorflow ์์ค ์ ๋๋ค.
ํ..๋ณด๊ธฐ๋ง ํด๋ ์ฃผํ์ ๋ง์ ๊ฑธ๋ฆด๊ฒ ๊ฐ์ ๋ณต์กํจ์ด ์์ฃ .
์๋๋ ์ผ๋ผ์ค ์์ค ์ ๋๋ค.
๋ญ๊ฐ ๋๋ฆ ๊น๋ํด ๋ณด์ ๋๋ค.
์ด๋ฌํ ์ ๊ทผ ์ฉ์ด์ฑ๊ณผ ๋น ๋ฅด๊ฒ prototypingํ ์ ์๋ ๊ฐ์ ๋๋ฌธ์,
๊ธ๋ฒ Tensorflow 2.0์์๋ Keras๋ฅผ ํ์ค API๋ก ํ์ ํ ๊ฑฐ์ฃ .
๊ธฐ์กด์ Kerasํ๋ค์๊ฒ...
๋น๊ธ์ ์ ์ตํ๊ณ ์๋๋ฐ ํญ์ ์ด๋๊ฐ๋ ๋น์ฃผ๋ฅ๋ผ๋ ํธ๋์บก์ ๋ง์์์ ์๊ณ ์ด๊ณ ์๋ค๊ฐ
ํ ์๊ฐ์ ์ฃผ๋ฅ๋ก ํธ์ ์ด ๋์ด๋ฒ๋ฆฐ ์ํฉ์ ๋๋ค.
์ด์ ์ฃผ๋ง์ ๊ฐ๋ ๋น์ฃผ๋ฅ๋ผ๋ ๋๋ฆผ์ ๋ฐ์ง ์์ฃ .
๊ธฐ์กด์ Keras ์์ค์ฝ๋์ tf๋ง ๋ถ์ด๋ฉด ๋๋ถ๋ถ ์ ๋์๊ฐ๋๋ค.
์๋ฅผ ๋ค์๋ฉด,
import keras.layers.Sequential
์ด๋ฌํ ์์ค๋ฅผ,
import tf.keras.layers.Sequential
์ด๋ ๊ฒ๋ง ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ถ๋ถ ์ ๋์๊ฐ๋๋ค.
์ ๊น. ์ฌ๊ธฐ์...
์์ ๊ธ๋ง ๋ณด๋ฉด keras๊ฐ ๋ณ๋์ ํ ์ธ๋ฏ ๋ณด์ ๋๋ค.
keras๋ ๋จ๋ ์ผ๋ก ๋์๊ฐ๋ api๊ฐ ์๋ ์๋์์ต๋๋ค.
keras ์ฐฝ์ ์ด๊ธฐ๋ถํฐ, backend๋ก๋ tensorflow๋, ์ง๊ธ์ ๋ฉธ๋ฌธํ ๋์ด๊ฐ๋ theano, cntk ๋ฑ์ ์ฌ์ฉํ๋
api์์ต๋๋ค.
๋ฌด์จ๋ง์ธ๊ณ ํ๋, ์ด์ ํธ์์ ์๊ธฐํ computational graph, tensor ์ฐ์ฐ, session๋ฑ์
์ ์์ค ์์ ๋ค์ wrappingํด์, ์ข๋ ์ฐ์ํด๋ณด์ด๋ ์์ ์ผ๋ก ์ ํฌ์ฅํ๋ค๋ ๋ง ์ ๋๋ค.
keras์์ ์ฐ์ํ๊ฒ model.fit ํ์ง๋ง,
์ค์ ๋ก๋ ๋ด๋ถ์ ์ผ๋ก๋ tensorflow์์ session์ ์์ฑํ๊ณ , global variable๋ค์ ์ด๊ธฐํ ํ๊ณ , computational graph๋ฅผ
compileํ๊ณ , session์ ์คํํ๋ ๋ฑ์ ์ ์์ค ์์ ์์ ํ๋ค๋ ๋ง ์ ๋๋ค.
์ข๋ deepํด์ง๋ deep learning์ด๋, ๊ฐ๋์ ์ด๋ฌํ ์ ์์ค ์์ ์์
์ง์ ์ ์ดํด์ผ ํ ๋๊ฐ ์์ง๋ง, ํ์์๋ ์ฐ์ํ๊ฒ model.fitํ๋ keras๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
์..์ฐ๋ค๋ณด๋...
์ค๋ฉ๋ ์์ ์๊ฐ์ ๋ชฐ๋๋ณด๋ ์์ ๋ฌธ์ด ์๊ฐ์ด๋์
๋ฌดํ์ค๋ฝ๊ฒ ์ฐ๋ค๋ณด๋ ๊ธ์ด ์กฐ์กํด์ก๋ค์.
์ด๋ฒ์๊ฐ์๋...์ง์ง๋ก Tensorflow 2.0์ ๋ํด์ ๋ฐ๋์ ์ ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค.
1๋ฒ. ์ฐ์ !!!
์ก์ค๋ฐ API๋ค์ ์ฃ๋ค ์ ๋ฆฌํ์ต๋๋ค.
๊ธฐ์กด 1.x ๋ฒ์ ์์๋ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด์ ๋ค์ํ ๊ตฌํ ๋ฐฉ๋ฒ์ด ์กด์ฌํ์์ผ๋,
2.0์๋ ๊ตฌํํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ ํ๋๋ง์ ๋๋๊ณ ์ธ๊ทธ๋ฆฌ ์ ๋ฆฌํ์ต๋๋ค.
์ ๋ฌธํ๋ ์ฌ๋์ด๋, ๊ธฐ์กด์ ๊ตฌํํ๋ ๊ฐ๋ฐ์๋ ๋ค๋ฅธ ๊ตฌํ์์ค๋ฅผ ๋ณด๊ณ ํผ๋์ด ์ฌ ์ผ์ด
๋ง์ด ์ ์ด์ก์ต๋๋ค.
๋ค๋ง...๊ธฐ์กด ์ฌ์ฉ์๋ฅผ ์ํด ํธํ์ฑ์ด ํ์ํ ๋ถ๋ถ์ ๋จ๊ฒจ๋์ต๋๋ค.
tf.compat.v1 ํจํค์ง ์๋, ๊ธฐ์กด์ ์ฐ๋ ํจํค์ง๋ค์ด ๋จ์ ์์ต๋๋ค.
2๋ฒ. Eager Execution ๋ชจ๋ ๋์
1ํธ์์ ์ ๊น ์๊ฐ๋๋ ธ๋ค์ํผ, tensorflow ๊ตฌ๋ฒ์ ์์๋ ๋ญ๊ฐ๋ฅผ ์คํํ๊ฑฐ๋ ํ๋ ค๋ฉด
๋จผ์ computational graph๋ฅผ ์์ฑํ๊ณ , ์ด๋ฅผ session์ ์์ฑํด์ผ๋ง ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ์ ์๋ค๊ณ
์ค๋ช ๋๋ฆฐ ๋ฐ ์์ต๋๋ค.
tesorflow 1.x ์์๋ ๋ง์ ์ ์๋์ ๊ฐ์ด session์ ์คํํด์ผ๋ง ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์์์ต๋๋ค.
๋ญ๊ฐ, ์ธ๊ฐ์ ์์ ํ๋ฆํ๊ณ ๋ ์ ์๋ง์ฃ ?
tensorflow 2.0์์๋ ์ ์ธ ์ฆ์ ์คํ๋๋ eager execution๋ชจ๋๊ฐ default๋ก ๋์์ต๋๋ค.
์๋ ๊ฒ ๊ฐ๋จํ๊ฒ ํ์์ ํ์ด์ฌ ์ฐ๋ฏ์ด ์ฐ๋ฉด ๋์ฃ ...
์ด๋ ๊ฒ ๋ฐ๋๋ฉด์...
๊ธฐ์กด์ tf.Session()๋... ๊ณจ๋ฐฉ(tf.compat.v1)์ผ๋ก ์ซ๊ฒจ๋ฌ์ต๋๋ค.
๊ธฐ์กด ๋ฐฉ๋ฒ๋๋ก session์ ์ฐ์๊ณ ์ถ์ผ์ ๋ถ๋ค์ ์ ๊ธฐ ๊ณจ๋ฐฉ์ ์ฐพ์ ๊ฐ์๋ฉด
tf.Session()์ด ๊ณจ๋ฐฉ์ ์งํค๊ณ ์์ต๋๋ค.
3๋ฒ. AutoGraph
๊ธฐ์กด์ session๊ธฐ๋ฐ์ function์ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์๋๋ฐ,
function ์์ tf.function ๋ฐ์ฝ๋ ์ดํฐ๋ง ๋ถ์ด๋ฉด, ์๋์ผ๋ก computatioal graph๋ฅผ
์์ฑํด ์ฃผ์ด, ๋ฐ๋ก ์ฌ์ฉ ํ ์ ์๊ฒ ๋ฉ๋๋ค.
์ฌ๊ธฐ์ autograph๊ธฐ๋ฅ์ด ๋์ค๋๋ฐ,
Autograph๋ funciton ์์ @tf.function์ด๋ decorator๋ฅผ ๋ถ์์ผ๋ก์จ
์์ฑ์ด ๋ฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ๋จ์ํ ์ด function๋ฟ๋ง ์๋๋ผ,
function ๋ด๋ถ์์ callํ๋ ๋ค๋ฅธ function๋ ์๋์ผ๋ก computaional graph๋ฅผ ์์ฑํด ์ค๋๋ค.
deep_next(x)๋ function ์์ @tf.function์ด๋ decorator๊ฐ ์์ฃ ?
์ decorator ๋๋ถ์ deep_net์ ๋น์ฐํ computational graph๊ฐ ์๋์ผ๋ก ์์ฑ์ด ๋๊ณ ,
์ deep_net๋ด๋ถ์์ ํธ์ถํ๋ linear_layer() ํจ์๊น์ง๋ ์๋์ผ๋ก computational graph๋ฅผ ์์ฑํด ์ค๋๋ค.
(์ ๋...์ด๋ฐ ๋ฐฉ์์ ์์จ๋ด์ ์ ๊ฒ ์ ํธํ์ง ์ฌ์ค ๊ฐ์ด ์ ์์ต๋๋ค...-_-;;;)
4๋ฒ. High Level API
์๋ ๋ ์์ค๋ฅผ ๋ณด๊ณ ๋ค๋ฅธ์ ์ ์ฐพ์๋ณด์ธ์.
์ผ์ชฝ์ tesorflow 1.x์ ์์ค์ด๊ณ , ์ค๋ฅธ์ชฝ์ tensorflow 2.0์ ์์ค ์ ๋๋ค.
์ ๋ต์...
์ผ์ชฝ์ tensorflow๊ฐ high level api๋ฅผ ๋์ ํ๊ฑด 17๋ ๋ง ๋ถํฐ์ฌ์
๋ ์์ค๋ ๊ฐ์ต๋๋ค๋ง,
2.0์ด ๋์ค๊ธฐ ์ ์์ค๋ ๋ด๋ถ์ ์ผ๋ก๋ tf.Session()์ ์ด์ฉํ์ฌ ์ํ์ด ๋๊ณ ,
์ค๋ฅธ์ชฝ์ tensorflow 2.0์์ค๋ ๋ด๋ถ์ ์ผ๋ก๋ eager execution์ผ๋ก ์คํ์ด ๋ฉ๋๋ค.
(tensorflow 2.0 dev summit 2019์์ ๋ฐํํ์ฌ ์ฒญ์ค๋ค์ ์์์ ์์๋ธ ๋ถ๋ถ ์ ๋๋ค.)
๊ทธ๋ฆฌ๊ณ , tensorflow๊ฐ 2.0์ด ๋๋ฉด์ ๋จธ์ /๋ฅ๋ฌ๋ workflow์๋ ๋ณํ์ ๋ฐ๋์ ์ผ์ผ์ผฐ์ต๋๋ค.
1. tf.data๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ์ ์ค๋น
2. tf.keras๋ฅผ ์ด์ฉํ์ฌ ๋ชจ๋ธ ์์ฑ, ํ๋ จ, ๊ฒ์ฆ
3. eager execution์ ์ด์ฉํ์ฌ ๋ชจ๋ธ ๋๋ฒ๊น
4. ๋ถ์ฐ traning์ ์ด์ฉํ์ฌ distribution strategy ์ฌ์ฉ
5. savedmodel๋ก ๋ชจ๋ธ ๋ฐฐํฌ
์๋ ๊ทธ๋ฆผ์ ๋ณด์๋ฉด ์ข ๋ ์ฝ๊ฒ ์ดํด๊ฐ ๋์ค ๊ฒ๋๋ค.
์์ฑ๋ ๋ชจ๋ธ์ Distribution Strategy์ ์ํด์,
๋ชจ๋ธ์ ๋ฐ๊พธ์ง ์๊ณ , CPU์์ ์คํํ๊ฑฐ๋ GPU ๋๋ TPU์์ ์คํํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋ถ์ฐ์ ์ฑ ์ ์ํด ์์ฑ๋ ๋ชจ๋ธ์
ํด๋ผ์ฐ๋์ ์จํ๋ ๋ฏธ์ค๋ก ์ ๊ณต๋๋ tensorflow serving์ผ๋ก ๋ฐฐํฌ๋๊ฑฐ๋,
๋ชจ๋ฐ์ผ device๋ฅผ ์ํ tensorflow์ธ tensorflow lite์์ ์ฌ์ฉํ๊ฑฐ๋,
๋ธ๋ผ์ฐ์ ๋๋ node.js์์ ์ฌ์ฉํ๊ธฐ ์ํ tesorflow.js,
๊ทธ๋ฆฌ๊ณ ์ผ๋ฐ์ ์ธ ๊ฐ๋ฐ์ธ์ด ๊ธฐ๋ฐ์์ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ธ๋ก ๋ฐฐํฌ๋ฅผ ํ ์ ์์ต๋๋ค.
์ด์์ผ๋ก ์๋ก๋์จ tensorflow 2.0์ ๋ํ ์๊ฐ๋ฅผ ๋ง์น๊ฒ ์ต๋๋ค.
GTK ํฐ๋ฏธ๋ ํ ๋ง ๋ณ๊ฒฝ
Pre-Install
$ sudo apt-get install dconf-cli uuid-runtime
Theme Install
$ bash -c "$(wget -qO- https://git.io/vQgMr)"
์ฐธ๊ณ : https://github.com/Mayccoll/Gogh
Linux์์ ์์ถํ์ผ ๋ด ํ์ผ์ด๋ฆ ๊นจ์ง๋
$ wget https://github.com/Thestars3/arkzip/releases/download/v2.4.4/arkzip_2.4.4_amd64.deb
$ sudo apt-get install libqt4-core
$ sudo dpkg --install arkzip_2.4.4_amd64.deb
$ unzip -O cp949 filename.zip
ํ๋กํ์ผ์ ๋ฑ๋กํ๋ฉด ๋งค๋ฒ ์ต์ ์ ๋ฃ์ง ์์๋ ๋๋ค.
export UNZIP="-O cp949"
export ZIPINFO="-O cp949"
์ ์ฒด ์ฌ์ฉ์ ์ ์ฉ์ ์๋ ์์น์ profile์ ์ถ๊ฐํ๋ค.
/etc/profile
** GUI์์ ํ๊ธ ๊นจ์ง์ง ์๊ณ ์์ถ์ ํ๋ ค๋ฉด ์๋ ์์ถ๊ด๋ฆฌ์๋ฅผ ์ค์นํ๋ค.
โ Arkzip ํจํค์ง๋ฅผ ๋ค์ด๋ก๋ ํฉ๋๋ค.
$ wget https://github.com/Thestars3/arkzip/releases/download/v2.4.4/arkzip_2.4.4_amd64.deb
โก Arkzip ์์กด์ฑ ํจํค์ง๋ฅผ ๋จผ์ ์ค์นํฉ๋๋ค.
$ sudo apt-get install libqt4-core
โข ๋ค์ด๋ฐ์ Arkzip ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.
$ sudo dpkg --install arkzip_2.4.4_amd64.deb
NVIDIA GPU monitoring
watch -d -n 0.1 nvidia-smi