Docker์ ๋ํ ์ค๋ช ์ ์๋ตํ๊ณ ์ค๋ก์ง ์๊ฒฉ ์ ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด์๋ง ๊ธ์ ์ธ ์์ ์.
SSH๋ Docker์ ๋ํ ์ค๋ช ์ ์๋ ์ฐธ๊ณ ์ฌ์ดํธ๊ฐ์ ๋ณด๊ณ ์ค์๊ธธ ๋ฐ๋.
๊ทธ๋ฆฌ๊ณ MAC ๊ธฐ์ค ์ค๋ช ์. ์๋์ฐ๋ ๊ฐ๋ค.
์ง๋ ํฌ์คํธ์์ CapsNet์ ๋์์๋ํด ์ดํด๋ณด์๋๋ฐ ์ด๋ฒ ํฌ์คํธ์์ CapsNet์ด ์ผ๋ง๋ ์ผ์ ์ํ๋๊ฐ์๋ํ ๋ถ๋ถ์ ์ดํด๋ณด๋๋ก ํ๊ฒ ๋ค.
์ง๋ post์์๋ CNN์ ํน์ง๊ณผ ๋จ์ ์ ๋ํด ์ ๋ฆฌ๋ฅผ ํด๋ณด์๋๋ฐ ์ด๋ฒ ํฌ์คํธ์์๋ ๋ณธ๊ฒฉ์ ์ผ๋ก Capsule Network(์ดํ CapsNet)์ ๋ํด์ ์ ๋ฆฌ๋ฅผ ํด๋ณด๋๋ก ํ๊ฒ ๋ค.
2017๋ Google Brain์ Geoffrey E. Hinton์ด ๋ฐํํ Object Recognition ๋ถ์ผ์ ์๋ก์ด ์ ๊ทผ๋ฐฉ๋ฒ์ ์ ์ํ ๋ ผ๋ฌธ์ด๋ค. ๊ธฐ์กด์ Object Recognition๋ชจ๋ธ๋ค์ Convolution Network๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค๊ณ๋์ด์๋ค. Convolution Network๋
feature extracting - maxpooling
๋ก ์ด๋ฃจ์ด์ ธ์๋ค. ์ฌ๊ธฐ์maxpooling
์ ๋ฌธ์ ์ ์ ์ง์ ํ๋ฉฐ ์๋ก์ด ๊ธฐ๋ฒ์ ์ ์ฉ์ํค๋๋ฐ ๊ทธ๊ฒ์ด ๋ฐ๋ก Capsule ๊ฐ์ routing by agreement ์ด๋ค. ์ฐจ๊ทผ์ฐจ๊ทผ ๋ฆฌ๋ทฐ๋ฅผ ํด๋ณด๋ก ํ๊ฒ ๋ค.
์ง๋ NHIS์ ์ฒ๋ฆฌ ์ ์ด์ด์ DNN์ ์ด์ฉํ ๋น๋จํ์ ์์ธก์ ํด๋ณด์๋ค. ๊ทธ ์ ์ ๋ฐ์ดํฐ์ ๋ํด ๊ฐ๋ตํ ์์ฝํ๋ฉด
926582 x 44
์ฌ์ด์ฆ์ ๋ฐ์ดํฐTarget
- 0 : ์ ์ 62%
- 1 : ์ ๋น๋จ 30%
- 2 : ๋น๋จ 8%
multi class classier ๋ฌธ์ ์ด๋ฉฐ imbalanced data ์ด๋ค.
๊ธฐ์กด์ 1์ฐจ์ MNIST ๋ฐ์ดํฐ๋ฅผ 3์ฐจ์ rgb ์ฑ๋๋ก ํ์ฅ ์ํจ๋ค vgg network๋ฅผ ์ด์ฉํด ์์ธก์ ์๋ํ๋ค.
import gzip
import os
import sys
import struct
import numpy as np
def read_image(fi):
magic, n, rows, columns = struct.unpack(">IIII", fi.read(16))
assert magic == 0x00000803
assert rows == 28
assert columns == 28
rawbuffer = fi.read()
assert len(rawbuffer) == n * rows * columns
rawdata = np.frombuffer(rawbuffer, dtype='>u1', count=n*rows*columns)
return rawdata.reshape(n, rows, columns).astype(np.float32) / 255.0
def read_label(fi):
magic, n = struct.unpack(">II", fi.read(8))
assert magic == 0x00000801
rawbuffer = fi.read()
assert len(rawbuffer) == n
return np.frombuffer(rawbuffer, dtype='>u1', count=n)
if __name__ == '__main__':
os.system('wget -N http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz')
os.system('wget -N http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz')
os.system('wget -N http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz')
os.system('wget -N http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz')
np.savez_compressed(
'mnist',
train_x=read_image(gzip.open('train-images-idx3-ubyte.gz', 'rb')),
train_y=read_label(gzip.open('train-labels-idx1-ubyte.gz', 'rb')),
test_x=read_image(gzip.open('t10k-images-idx3-ubyte.gz', 'rb')),
test_y=read_label(gzip.open('t10k-labels-idx1-ubyte.gz', 'rb'))
)
import sys
sys.setrecursionlimit(10**6)
from collections import defaultdict
def solution(a, edges):
global answer, graph
graph = defaultdict(list)
answer = 0
for v1, v2 in edges:
graph[v1].append(v2)
graph[v2].append(v1)
dfs(a, 0, -1)
return -1 if sum(a) else answer
def dfs(a, node, parent) :
global answer
for child in graph[node] :
if child == parent : continue
dfs(a, child, node)
a[parent] += a[node]
answer += abs(a[node])
a[node] = 0
pair = {')' : '(', '}' : '{', ']' : '['}
def check(s) :
answer = 0
stack = []
for sign in s :
if sign in '({[' : stack.append(sign)
elif stack and stack[-1] == pair[sign] : stack.pop()
else : return 0
if not stack : answer += 1
return 0 if stack else answer
def solution(s) :
s = s+s
for i in range((n := len(s)//2)) :
if (answer := check(s[i:i+n])) == 0 : continue
return answer
return 0