반응형

김태훈



https://www.youtube.com/watch?v=soJ-wDOSCf4&t=16s

DCGAN


https://www.youtube.com/watch?v=klnfWhPGPRs

책읽어주는 


https://www.youtube.com/watch?v=NGGO0zdzhVQ

강화학습




carpedm20.github.io





윤인성

머신러닝/딥러닝 실전 입문


https://www.youtube.com/watch?v=ivf1I85pzw8&list=PLBXuLgInP-5m_vn9ycXHRl7hlsd1huqmS&index=6



https://www.youtube.com/watch?v=mH6Y3VHBhJI


'머신러닝 & 텐서플로 & 파이썬' 카테고리의 다른 글

GAN 스터디  (0) 2019.03.27
데이타 크롤링  (0) 2018.04.02
Tensorflow training을 save하고 restore하는 방법  (0) 2018.03.22
Matplotlib 사용하기  (0) 2018.03.20
adam and gradient descent optimizer  (0) 2018.01.29
반응형

 

 

 

요즘 카카오 미니 광고가 눈에 자주 들어오네요.

아이들이 게임하는 모습이 너무 귀엽고 해서 한번 써보고싶다는 생각이 드네요.

물론 와이프님의 허락이 필요하겠지만요 ㅠㅠ

https://kakao.ai/feature

 

반응형



training modeling 을 저장했다가 다시 불러서 사용하게 되면,

처음부터 training을 할 필요가 없어져서 매우 유용합니다.


그 방법 역시 매우 간단한데요. 아래 예제가 있습니다.

한번 활용해보세요.


optimizer = tf.train.AdamOptimizer(learning_rate)

train = optimizer.minimize(cost)


saver = tf.train.Saver()

sess = tf.Session()

sess.run(tf.global_variables_initializer())


# training 을 저장할 file 명

mytrain= "./mytain.ckpt"


if os.path.exists(mytrain+".meta"):

# 파일에서 loading

    saver.restore(sess, mytrain)


else :

    for step in range(2001) :

        cost_val, hy_val, _ = sess.run([cost, hypothesis, train], feed_dict={X: trainX, Y: trainY})

        if step % 10 ==0 :

            print(step, "Cost: ", cost_val, "\nPrediction:\n", hy_val)


#file에 저장

    saver.save(sess, mytrain)


test_predict = sess.run(hypothesis, feed_dict= {X: testX})





아래와 같이 graph 까지 복원해서 사용할 수 있는 방법도 있습니다.

saver = tf.train.import_meta_graph(mytrain+".meta")

saver.restore(sess, mytrain)




ex)

save



train_size = int(len(dataY) * 0.7)

test_size =  len(dataY) - train_size


trainX = np.array(dataX[0:train_size])

testX = np.array(dataX[train_size:len(dataX)])


trainY = np.array(dataY[0:train_size])

testY = np.array(dataY[train_size:len(dataY)])


input_len = data_dim*seq_length


X = tf.placeholder(tf.float32, [None, input_len], name='X')

Y = tf.placeholder(tf.float32, [None, 1], name='Y')


W = tf.Variable(tf.random_normal([input_len, 1]), name='weight')

b = tf.Variable(tf.random_normal([1]), name='bias')


#hypothesis = tf.matmul(X, W) + b

hypothesis = tf.add(b, tf.matmul(X, W), name="h")




cost = tf.reduce_mean(tf.square(hypothesis - Y))


optimizer = tf.train.AdamOptimizer(learning_rate)

train = optimizer.minimize(cost)


saver = tf.train.Saver()

sess = tf.Session()

sess.run(tf.global_variables_initializer())



for step in range(2001) :

    cost_val, hy_val, _ = sess.run([cost, hypothesis, train], feed_dict={X: trainX, Y: trainY})

    if step % 10 ==0 :

        print(step, "Cost: ", cost_val, "\nPrediction:\n", hy_val)


saver.save(sess, mytrain)





resotre

if os.path.exists(mytrain+".meta"):

    sess = tf.Session()

    sess.run(tf.global_variables_initializer())

    saver = tf.train.import_meta_graph(mytrain+".meta")


    saver.restore(sess, mytrain)


    graph = tf.get_default_graph()

    X = graph.get_tensor_by_name('X:0')

    W = graph.get_tensor_by_name('weight:0')

    b = graph.get_tensor_by_name('bias:0')


    hypothesis = graph.get_tensor_by_name('h:0')   #tf.matmul(X, W) + b



    test_predict = sess.run(hypothesis, feed_dict={X: testX})




'머신러닝 & 텐서플로 & 파이썬' 카테고리의 다른 글

데이타 크롤링  (0) 2018.04.02
머신러닝 유투브 영상모음  (0) 2018.03.29
Matplotlib 사용하기  (0) 2018.03.20
adam and gradient descent optimizer  (0) 2018.01.29
Softmax  (0) 2018.01.26
반응형


ML/DEEP LEARNING 등을 스터디하다보면,

그래프를 통해서 결과를 확인해야 할 때가 많습니다.


이때 사용할 수 있는 matplotlib 을 소개하고자합니다.


https://matplotlib.org



python 에서 matplotlib을 사용하는 방법은 간단합니다.

아래 예제코드를 준비 했습니다.

import matplotlib.pyplot as plt



plt.figure()

plt.plot([1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1,0])

plt.show()


print("hello")





cnn test 를 위해 작성한 코드


import tensorflow as tf

import numpy as np

import matplotlib.pyplot as plt




sess = tf.InteractiveSession()


image = np.array ([[[[1],[2],[3]],

                    [[4],[5],[6]],

                    [[7],[8],[9]]]], dtype=np.float32)


print(image.shape)

# visualization

plt.imshow(image.reshape(3,3), cmap='Greys')



print("image.shape", image.shape)

#weight = tf.constant([[[[1.]],[[1.]]],

#                      [[[1.]],[[1.]]]])


weight = tf.constant([[[[1.,10.,-1]],[[1.,10.,-1]]],

                      [[[1.,10.,-1]],[[1.,10.,-1]]]])

print("weight.shape", weight.shape)

conv2d = tf.nn.conv2d(image, weight, strides =[1,1,1,1], padding='SAME') # convolution - padding ='VALID'

conv2d_img = conv2d.eval()

print("conv2d_img.shape", conv2d_img.shape)


# visualization

conv2d_img = np.swapaxes(conv2d_img, 0,3)

for i , one_img in enumerate(conv2d_img):

        print(one_img.reshape(3,3))

        plt.subplot(1,3,i+1), plt.imshow(one_img.reshape(3,3), cmap='gray')


plt.show()


pool = tf.nn.max_pool(conv2d_img, ksize=[1,2,2,1],

                    strides=[1,1,1,1],padding='SAME')

print("pool", pool)




설치방법

그럼 설치 방법도 알아야 하는데요. https://matplotlib.org 에도 잘 설명이 되어있습니다.

제 개발 환경은 다음과 같습니다.

  - Ubuntu 14.04

  - python3.4

  - tensorflow 1.6

  - virtualenv


Ubuntu 환경에서 설치는 python3-matplotlib 를 하면 됩니다.


tensorflow 를 python3 ( 3.4) 버전에 서 사용하고 있기 때문에  python3-matplotlib를 설치 했습니다.

$ sudo apt-get install python3-matplotlib


python package 설치가 필요합니다.

(tensorflow)$ pip3 install --upgrade matplotlib

-- virtualenv를 사용하고 있어서 virtualenv 상에 matplotlib을 설치 하였습니다.



반응형

텐서플로우에서 옵티마징은 보통 예제에는,


gradient decent 알고리즘을 사용하는데, CNN , NN 등에서는 AdamOptimizer를 권장하는군요.


옵티마이징 그래프를 확인해보면, 확실히 성능이 더 좋아 보입니다.



gradient descent : tf.train.GradientDecscentOptimizer

Adam : tf.train.AdamOptimizer

'머신러닝 & 텐서플로 & 파이썬' 카테고리의 다른 글

Tensorflow training을 save하고 restore하는 방법  (0) 2018.03.22
Matplotlib 사용하기  (0) 2018.03.20
Softmax  (0) 2018.01.26
drop out 과 앙상블(ensemble)  (0) 2018.01.26
초기값  (0) 2018.01.26
반응형

softmax 는 multinomial classificatioin 즉, 2개 이상의 data 그룹을 나누기 위한 모델입니다.





'머신러닝 & 텐서플로 & 파이썬' 카테고리의 다른 글

Matplotlib 사용하기  (0) 2018.03.20
adam and gradient descent optimizer  (0) 2018.01.29
drop out 과 앙상블(ensemble)  (0) 2018.01.26
초기값  (0) 2018.01.26
Sigmoid , ReLU  (0) 2018.01.26
반응형

drop out




NN 에서 drop out 기법은 여러 입력 변수들 중에서 일부 뉴런들을 disable 시키고 나머지 내용들로 학습시킵니다.


주의점 : 학습할때만 dropout 시킴!!!!



방법 


dropout_rate = tf.placeholer("float")

_L1 = tf.nn.relu(tf.add(tf.matmul(X,W1), B1))

L1 = tf.nn.dropout(_L1, dropout_rate)




TRAIN:

   sess.run(optimizer, feed_dict={X:batch_xs, Y: batch_ys, dropout_rate:0.7})


EVALUATION:

  print "Accuracy:", accuracy.eval({X: mnist.test.images, Y:mnist.test.labels, dropout_rate:1})





앙상블

똑같은 NN을 여러개 구성 해놓고 같은 training data로 각각의 NN에 트레이닝 시키고 나서

나중에 합치게 되면 성능개선이 3~5% 이상 올라간다.


이유 : W 초기 값이 random이기 때문에 똑같이 구성된 NN이라 하더라도 트레이닝 동작이 달라지게 됨.

이로 인해서 서로 약간씩 다른 결과가 나오는데 이를 합치게 되면 더 많은 traning data로 training한 효과가 나오게 됨.





[김성 모두를 위한 딥러닝 강좌]

https://www.youtube.com/watch?v=wTxMsp22llc&index=32&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm


'머신러닝 & 텐서플로 & 파이썬' 카테고리의 다른 글

adam and gradient descent optimizer  (0) 2018.01.29
Softmax  (0) 2018.01.26
초기값  (0) 2018.01.26
Sigmoid , ReLU  (0) 2018.01.26
tensorboard: 학습 모니터  (0) 2018.01.26
반응형

머신러닝에서 초기 weight 값은 매우 중요합니다.

딥러닝 알고리즘들이 발표되고 나서 오랜 기간동안 학습 효율이 안나와서 외면받아왔었습니다.

이렇게 효율이 안나오게 된 이유중 하나가 이 초기 값의 잘못된 설정 때문이었습니다.


그후 여러가지 방식으로 초기값을 결정하려고 하는 노력들이 있었습니다.


Not all 0's

절대로 모든 값을 0을 주면 안된다.



RBM - restriced boltzmann machine

입력 값을 줘서 출력을 만들고 , 출력 레이어에서 입력 레이어 쪽으로 반대로 전달한다.

이렇게 했을때 초기 입력 값과 출력에서 보내서 입력 레이어를 거치고 나온 값이 유사하도록 W값을 조정한다.



PRE-TRAINING

RBM 을 각 레이어별로 계산함..



- 좋은 방식임 -

- 그러나 복잡함.


-------------------------------------


Xavier/He initialization

너무나도 간단한 방식으로 RBM과 유사한 결과를 만들어 낼 수 있는 방법이 생겼습니다.

Simple methods are OK


몇개의 입력인지와 몇개의 출력인지를 보고 이를 비례하게 결정해주면 됩니다.


2010

W = np.random.randn(fan_in, fan_out)/np.sqrt(fan_in)



2015

W  =np.random.randn(fan_in, fan_out)/np.sqrt(fan_in/2)

image net의 오류가 3%로 떨어뜨림.





def xavier_init(n_inputs, n_outpus, uniform=True)

  if uniform:

     init_rangle = math.sqrt(6.0(n_inputs + n_outputs))

     return tf.random_uniform_initializer(-init_range, init_range)

  else

     stddev = math.sqrt(3.0/(n_inputs + n_outputs))

     return tf.truncated_normal_initializer(stddev=stddev)


'머신러닝 & 텐서플로 & 파이썬' 카테고리의 다른 글

Softmax  (0) 2018.01.26
drop out 과 앙상블(ensemble)  (0) 2018.01.26
Sigmoid , ReLU  (0) 2018.01.26
tensorboard: 학습 모니터  (0) 2018.01.26
데이타 프로세싱(data processing)  (0) 2018.01.25

+ Recent posts