반응형

트랜스포머는 시퀀스-투-시퀀스(seq2seq) 모델입니다. 
즉, 데이터에 순서가 있고, 출력 그 자체가 시퀀스인 모든 문제에 적합합니다. 
적용 예로는 기계 번역, 추상적 요약(abstractive summarization), 음성 인식 등이 있습니다. 

 

 

최근 [Vision Transformers (ViT)] 심지어 컴퓨터 비전(computer vision)에서의 최첨단 기술까지 향상시켰습니다.

https://arxiv.org/abs/2006.03677

 

Visual Transformers: Token-based Image Representation and Processing for Computer Vision

Computer vision has achieved remarkable success by (a) representing images as uniformly-arranged pixel arrays and (b) convolving highly-localized features. However, convolutions treat all image pixels equally regardless of importance; explicitly model all

arxiv.org


아래에서 전체 트랜스포머 아키텍처의 시각화를 확인하실 수 있습니다. 
저희는 모든 구성 요소가 무엇을 하는지, 왜 그곳에 있는지, 어떻게 모든 것이 서로 잘 맞물려 작동하는지 설명해드리겠습니다. 
우선, 둘 내부에 여러 신경망 계층(neural network layer)가 있는 인코더(좌측)와 디코더(우측)가 있음을 확인하시기 바랍니다.

코드 예시는 Harvard NLP Group의 [The Annotated Transformer] 및 [트랜스포머에 대한 PyTorch 문서]

https://nlp.seas.harvard.edu/2018/04/03attention.html

 

The Annotated Transformer

———————- There is now a new version of this blog post updated for modern PyTorch. ———————- from IPython.display import Image Image(filename='images/aiayn.png') The Transformer from “Attention is All You Need” has been on a l

nlp.seas.harvard.edu

 

https://pytorch.org/tutorials/beginner/transformer_tutorial.html

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

Conda 설치, SSL error 대응  (0) 2020.01.14
cer file을 pem 변환하기  (0) 2020.01.14
GAN 스터디  (0) 2019.03.27
데이타 크롤링  (0) 2018.04.02
머신러닝 유투브 영상모음  (0) 2018.03.29
반응형

Conda 설치 

 

여기에서 각 OS에 맞는 anaconda를 설치하세요.

https://www.anaconda.com/distribution/

 

Anaconda Python/R Distribution - Free Download

Anaconda Distribution is the world's most popular Python data science platform. Download the free version to access over 1500 data science packages and manage libraries and dependencies with Conda.

www.anaconda.com

 

설치후 shell을 실행하면, (base) 로 conda가 활성화 되어있습니다.

이를 제거 하려면,

$ conda config --set auto_activate_base false

이렇게 설정 하시면 됩니다.

 

사용 방법

 

conda 설치 후에 가상 환경을 만듭니다.

 

$ conda create -n torch python=3.6  # torch라는 가상 환경을 만듭니다.

 

(torch) $ conda activate torch  # 가상환경 torch를 activate 시킵니다.

 

(torch) $ conda deactivate # 가상환경 torch를 deactivate 시킵니다.

 

 

 

 

 

 

[출처] [Ubuntu18.04 환경설정] Anaconda3 설치 및 가상환경 생성|작성자 DL연구생

 

 

Trouble shooting #1

 

 

conda 설치할때, 방화벽이 있거나 보안이 철저한 환경에서 셋업을 할때는 아래와 같은 설정을 해줘야 합니다.

 

이런 정보들 찾아서 시도해보고 다시 정리하고 하는 것은 정말 많은 시간을 낭비하게 되네요.

회사들 마다 보안 환경들이 모두 다르기 때문에 더더욱 시간 허비가 심하죠.

 

그래서 도움이 될까 해서 정리 했습니다.

 

 

SSL 또는 Proxy error

ConnectTimeout(MaxRetryError("HTTPSConnectionPool(host='repo.anaconda.com', port=443): Max retries exceeded with url: /pkgs/main/linux-64/current_repodata.json (Caused by ConnectTimeoutError(, 'Connection to repo.anaconda.com timed out. (connect timeout=9.15)'))")) 

 

 

프록시 설정을 .condarc 파일 에서 하기

ssl_verify: <my crt file>.crt

proxy_servers:
      http: http://<proxy server url : port> 
      https: https://<proxy server url : port> 

 

 

 

 

다른 방법

cert file 설치을 pip 의 certi file 로 설정하는 방법

 

pip config set global.cert path/to/ca-bundle.crt
pip config list conda config --set ssl_verify path/to/ca-bundle.crt
conda config --show ssl_verify# Bonus while we are here...
git config --global http.sslVerify true
git config --global http.sslCAInfo path/to/ca-bundle.crt

 

 

패키기 설치(Package install)

 

conda install [pkgname]

 

 

 

[참고]

conda configuration guide

https://docs.conda.io/projects/conda/en/latest/user-guide/configuration/use-condarc.html#config-proxy

 

 

 

 

 

 

 

반응형

 

cer file을 pem 변환하기

openssl x509 -inform der -in /path/to/your/certificate.cer -out /path/to/converted/certificate.pem

 

 

끝!

반응형

http://solarisailab.com/archives/2482


반응형

준비하기



[bs4 install]


pip3 install --upgrade bs4


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


import urllib.requset 

import urllib.parse


url ="http://xxx.xxx.xxx/img/test.png"

savename="test.png"

#download

urllib.request.urlretrieve(url, savename )




#memory 로 로드

mem = urllib.requst.urlopen(url).read()


with open(savename, mode="wb") as f:

f.write(mem)

print("saved");






방식 : GET, POST, PUT, DELETE

대상 : http://media.daum.net   => 호스트 네임

추가정보

- 경로 : /photo-viewer

- 데이타: ?cid=318190#20170615103230763

요청 매개변수.


api = "https://search.naver.com/search.naver"

value ={

"where":"nexearch",

"sm":"top_hty",

"fbm":"1",

"ie":"utf8",

"query":"초콜릿"

}


params = urllib.parse.urlencode(values)


print (api)

print(params)


url = api +"?"+ params



data = urllib.request.urlopen(url).read()

text = data.decode("utf-8") // # euc-kr

print(text)




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


BeautifulSoup   스크랩 툴.


pip BeautifulSoup


from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')



아래 두 함수 사용 css 선택자를 이용하여 선택하는 함수임.

 css 선택자를 알아야 함.

soup.select_one()

soup.select()


<html><body>

<div id="meigen">

<h1> 위키북스 도서</h1>

<ul class= "items art it book">  => class를 여러개 사용.

<li>유니티 게임 인문</li>

</ul>

</div>

</body></html>


css 선택자 :

tag 선택자  : 

 "ul", "div", 'li" ...

id 선택

 "#meigen"  =>id

 "#<id이름>"

class 선택자

 ".book.art.it.items"  => 점으로

 "ul.book"

".<클래스 이름>.<클래스 이름>.<클래스 이름>"


후손 선택자

"html li"

자식 선택자

"ul.items > li"ㄱ



list_items = soup.select("ul.items li")  # 요소 의 배열


header = soup.select_on("body > div > h1") # 요소


print(header.string)

#header.attrs["title"]


print(soup.select_one("ul").attrs)


for li in list_items:

print(li.string)


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

기사에서 마우스 오른쪽 클릭 ->검사


url = "http://news.naver.com/main/main.nhn?mode=LSD&mid=shm..."

response = urllib.request.urlopen(url)

soup = BeautifulSoup(response, "html.parser")

results = soup.select("#section_body a")

for result in results:

print("제목:", results.attrs["title"])

print("링크:", result.attrs["href"])

print("")

url_article = result.attrs["href"]

response = urllib.request.urlopen(url_article)

soup_article = BeautifulSoup(response, "html.parser")

content = soup_article.select_one("#articleBodyContests")


#print(content.contents)  => 보기 않좋음

output=""

for item in content.contents:

#output += str(item) 

stripped = str(item).strip()

if stripped =="":

continue

if stripped[0] not in ["<","/"]:

output += str(item).strip()



printf(output.replace("본문 내용TV플레이어",""))



time.slee(1) # server에서 과부화 걸리면 ip 차단함.. 그래서 회피를 위해 sleep







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

import requests


from bs4 import BeautifulSoup


print("start")

#url = "http://ecos.bok.or.kr/jsp/vis/keystat"

url = "http://ecos.bok.or.kr/jsp/vis/keystat/Key100Stat_n.jsp"

#url = "http://news.naver.com/"

proxies = {

'http': 'http://ip:port',

'https': 'https://ip:port',

}

#proxy = req.ProxyHandler({'http': '168.219.61.252:8080'})

r =  requests.post(url, proxies=proxies)


soup = BeautifulSoup(r.text,'lxml')

#with open("test.html", mode='wt') as f:

#    f.write(r.text)


print(r.text)


#results = soup.select("#section_body a")


results = soup.select('tr')



for res in results:

    print(res)


print("end")



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




반응형

김태훈



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
반응형



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을 설치 하였습니다.



+ Recent posts