반응형

<2019. 11. 12.>

이비라푸에라공원(아침 조깅) - 리베르다지(Liberdade) - 쎄 성당 - 레스토랑(Panificadora Santa Tereza) - 복권 - 중앙시장 - 크라콜란지아(마약소굴) - 봉헤찌로(한인타운) - 이탈리아 빌딩(전망대) - 아우구스타 거리 - 트리아농 공원 - 상파울루 미술관(MASP) - 맥도날드



점심식사를 마치고 주차장으로 가는 길, 

사람들이 몰려있는 복권가게를 보고 그냥 지나칠 수 없었다.

 

브라질에서는 복권 대한 열기가 뜨겁고, 보편적이라고 한다

세계에서 소득 불평등 정도가 심한 국가 중 하나이다 보니, 

많은 사람들이 복권을 통해 부자가 되는 것이  쉽다고 믿고 있다고 한다..

비단 소득 불평등 정도 때문일까.. 싶기는 하다.

 

 

브라질에서 상금이 가장 많은 복권종류인 MEGA-SENA 도전!

 

2019. 11. 10.부터 복권 가격도 전체적으로 인상된듯..

 

브라질 복권 MEGA-SENA는 우리나라 로또와 유사한 방식으로,

50개의 숫자 가운데 6개를 선택하는데,

다른 점은 돈을 추가하면 숫자를 더 추가선택하여 당첨확률을 높일 수 있다는 점이다.

그러나 추가되는 금액이 어마무시하여, 대개 6개만 선택한다고..

 

 

※ 참고 : 

브라질에서 합법적으로 체류하고 있는 신분 상태라면, 외국인도 브라질 복권 구매/당첨금 지급 가능하다고 한다.

당첨금 지급 시, CPF 금융번호가 반드시 있어야 하는데,

브라질 비거주자용 CPF 번호 발급 제도를 이용하면 된다고 ^^

(http://hanintoday.com.br/zbxe/free_talk/916005)

반응형
Posted by CCIBOMB
반응형

<2019. 11. 12.>

이비라푸에라공원(아침 조깅) - 리베르다지(Liberdade) - 쎄 성당 - 레스토랑(Panificadora Santa Tereza) - 복권 - 중앙시장 - 크라콜란지아(마약소굴) - 봉헤찌로(한인타운) - 이탈리아 빌딩(전망대) - 아우구스타 거리 - 트리아농 공원 - 상파울루 미술관(MASP) - 맥도날드



쎄 성당 근처 레스토랑(Panificadora Santa Tereza)

브라질스럽게 점심식사를 하기 위해서 

현지 교민의 추천으로 찾았다. (여자친구와도 종종 오는 곳이라고)

 

입장할때는 다음과 같은 카드를 받아야 한다.

이걸로 계산하고 나갈 때에도 출입구(지하철 개찰구 같은..)에 이 카드를 넣어야 한다.

 

1층은 바에서 간단하게 빵 종류로 식사를 하고 가는 사람들이 주로 이용한다.

 

2층은 레스토랑식으로 1층과는 분위기가 다르다.

 

메뉴는 다양하다.

그림이나 사진 없이 메뉴판만 보고 음식을 고르는 것은 정말 어렵다.

 

식전빵.

브라질에서 이 빵을 먹을 때에는 올리브유와 버터, 소금을 곁들인다.

빵을 반으로 갈라 올리브유를 뿌리고, 버터를 바른 뒤, 소금을 뿌려 먹는다.

이 방법을 배우고 나니,

기내식에서 간이 없는 빵 쪼가리 하나가 나와도 맛있게 먹을 수 있게 되었다.

의외로 참말로 맛있다. 신세계다.

 

칵테일은 브라질 국민 칵테일 카이피리냐(Caipirinha), 19.3헤알.

브라질의 각급 식당, 주점, 가정에서도 많이 즐기는 칵테일이다.

카샤사(cachaça)와 설탕, 라임을 섞어 만든다.

라임 외에 다른 과일을 넣어도 좋다.

칵테일이니 도수야 만들기 나름이겠지만, 이곳의 카이피리냐 도수는 꽤 높아 대낮부터 얼굴이 벌개졌다.

 

카샤사는 사탕수수로 만드는 브라질의 국민 증류주이다.

슈퍼마켓에 가보면 가격대도 천차만별이다. 

 

현지 교민 추천 메뉴 2개 (camarao a grega, filet a pamegiana ind)

브라질의 음식은 대체로 짠 편이다.

camarao a grega(까마룡 그레고)는 그리스식 새우요리라는데,

새우와 치즈, 볶음밥, 감자튀김을 곁들인 요리였다. 53.8헤알

 

filet a pamegiana(빠매지안느 : 소고기 + 치즈 + 토마토소스)에는 따로 밥과 감자튀김이 나왔다. 42.1헤알

 

총 133.87헤알 (한화 약 4만원 상당)

 

위치 : Praça Dr. João Mendes, 150 - Centro Histórico de São Paulo, São Paulo - SP, 01501-000 브라질

https://g.page/PadariaSantaTerezaOficial?share

 

Panificadora Santa Tereza on Google

Find out more about Panificadora Santa Tereza by following them on Google

g.page

반응형
Posted by CCIBOMB
반응형

<2019. 11. 12.>

이비라푸에라공원(아침 조깅) -리베르다지(Liberdade) - 쎄 성당(Categral da Sé) - 레스토랑(Panificadora Santa Tereza) - 복권 - 중앙시장 - 크라콜란지아(마약소굴) - 봉헤찌로(한인타운) - 이탈리아 빌딩(전망대) - 아우구스타 거리 - 트리아농 공원 - 상파울루 미술관(MASP) - 맥도날드

 

쎄 성당(Categral da Sé)

상파울루 도심의 쎄 광장에 있는 대성당이다.

상파울루 주교에 소속되어 있다.

544년에 처음 건립되었으나,

현재의 건물은 20세기에 들어와 40년간의 대공사 끝에 1954년(상파울루 시 창립 400주년 기념)에 완공된 것이다.

 

 정면에 솟아 있는 2개의 고딕양식의 첨탑은 높이가 65m에 이른다. 

 

 

쎄 성당 내부

첨탑 사이의 원형돔은 지름이 27m에 이르는 거대한 규모이다.

역대 상파울루 사제들의 시신이 안치되어 있다. 

 

브라질의 종교사를 표현한 스테인드글라스가 매우 아름답다.

 

 

쎄 성당이 있는 쎄 광장은 동서남북으로 연결되는 전철 환승역이 있을만큼 교통중심지 역할을 한다.

역사 가치가 높지만,

오래된 건물과 낙후된 상업시설로 사람들의 발길이 많이 끊어졌고

(주변 건물들을 보면 예전의 명성을 짐작해 볼 수 있다.),

현재는 부랑자들로 가득한 우범지대로 명성을 떨치고 있다.

(현지 한인교민 曰. 부랑자들은 여행객들을 많이 노리기 때문에, 현지인처럼 보이는 게 가장 중요하다. 

여행객들은 길거리에서 걸으며 담배를 피는 경우가 잘 없는데, 현지인과 구별되는 점 중 하나이다.

브라질에는 다양한 인종이 살고 있고 동양인들도 많기 때문에,

피부색으로 여행객이라고 판단하지는 않으므로 행동이 현지인 같아 보이는게 좋다.)

 

쎄 광장 바로 앞에는 이정표가 있는데,

고속도로 이정표(상파울루까지 몇 km 남았는지)의 기준점이라고 한다. 

반응형
Posted by CCIBOMB
반응형

<2019. 11. 12.>

이비라푸에라공원(아침 조깅) - 리베르다지(Liberdade) - 쎄 성당 - 레스토랑(Panificadora Santa Tereza) - 복권 - 중앙시장 - 크라콜란지아(마약소굴) - 봉헤찌로(한인타운) - 이탈리아 빌딩(전망대) - 아우구스타 거리 - 트리아농 공원 - 상파울루 미술관(MASP) - 맥도날드

 

리베르다지는 초창기 일본인 이민자들이 모여 살던 곳이다.

일본에서 브라질로의 이민은 100년이 넘은 역사가 있다.

당시 브라질은 광대한 토지에서 일할 농업 노동자가 부족하였고,

일본의 농촌에서는 좁은 농토에 궁핍한 생활을 하고 있었다고 한다.

이에 일본은 브라질 이민을 장려했고, 브라질에서는 일본 이민들을 환영하였다고..

결국 브라질은 일본 사람이 가장 많이 이민을 떠난 나라가 되었다.

이민 시작 이후 브라질로 이주해 간 일본인들의 전체 합계는 25만 명에 이르렀고,

그 자손인 2세, 3세, 4세가 불어나면서 현재 160만 명 이상인 것으로 추산되고 있다고 한다.

(참고: 위키피디아, 연합뉴스 등)

 

 

리베르다지에는 일본풍의 가로등이 세워져 있어

'일본 거리'로 불리고 일본인 이민자 단체와 문화시설, 음식점, 상가 등이 많이 들어서 있다.



하지만 최근 한국과 중국 등 아시아 다른 국가의 이민자들이 늘어나면서

리베르다지의 모습은 많이 변했다.

특히 중국인이 운영하는 음식점과 상가가 빠르게 늘어나면서

일본인 상권은 거의 사라졌고 지금은 '아시아인 지역'으로 불린다.

 

요새 전자제품 등을 판매하는 가게들 대부분은 중국인들이라고 한다.

 

예전에는 일본인들이 운영하던 큰 슈퍼마켓도 중국인들이 운영하는 경우가 많아졌다고 한다. 

 

리베르다지에서는 일본풍 뿐 아니라, 아시아의 다양한 종류 음식들을 맛볼 수 있다.

 

아침 조깅을 하며 사먹지 못한 아사이를 이번에는 제대로 챙겨먹었다.

아사이보울과 스무디- 맛있다. 너무 욕심을 부려 배가 부를만큼 먹었다.

몇년 전 한국에서도 한창 유행하더니, 요새는 코스트코에서조차 아사이베리를 찾아볼 수 없게 되었다.

(분말가루만 판매되고 있다.. 스무디가 참 맛있는데.. 아쉽다. 판매하는 곳을 알고 싶다.)

 

리베르다지 스트릿 시장- 간단한 먹거리류를 주로 판다.

 

브라질에서 많이 먹는 사탕수수 즉석음료.

이동식 차량에서 대나무와 같은 사탕수수를 즙짜는 기계에 넣으면,

달짝지근한 설탕물 같으면서도 아주 달지는 않은 천연 사탕수수 음료가 나온다.

 

※ 참고 : 리베르다지 시내 주차타워 주차요금

1시간에 16헤알, 2시간에 8헤알 추가, 3시간에 4헤알 추가..

 

 

이곳의 낙서와 스티커들이 멋있어 보인다.

상파울루의 독특한 분위기를 만드는 데 큰 일조를 하고 있는 것 같다.

왜 거기에 있는지 모를 엉뚱한 곳에 있는 낙서들..

 

위치 : 

https://goo.gl/maps/qPut5eUGnkuCLiVK9

 

Google Maps

Find local businesses, view maps and get driving directions in Google Maps.

www.google.com

 

반응형
Posted by CCIBOMB
Deep Learning2019. 12. 23. 23:43
반응형

 김성훈 교수님의 [모두를 위한 딥러닝] 강의 정리

 - https://www.youtube.com/watch?reload=9&v=BS6O0zOGX4E&feature=youtu.be&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&fbclid=IwAR07UnOxQEOxSKkH6bQ8PzYj2vDop_J0Pbzkg3IVQeQ_zTKcXdNOwaSf_k0

 - 참고자료 : Andrew Ng's ML class

  1) https://class.coursera.org/ml-003/lecture

  2) http://holehouse.org/mlclass/ (note)

 

 

1. TensorBoard

 - TensorFlow가 동작하는 방식을 시각화해줌

 - 기존 콘솔방식

 - TensorBoard를 이용한 방식

 

2. TensorBorad를 이용하기 위한 5가지 단계

 (1) 로그를 남기고 싶은 텐서를 선택

 (2) 한 군데로 모음

 (3) 특정 파일에 기록

 (4) run 함수로 구동한 결과를 add_summary로 추가

 (5) tensorboard 명령으로 결과 확인

   - terminal command line에서 해당 명령어 입력

   - ssh port forwarding을 통해, 원격에서도 확인 가능

 

3. TensorBorad 실행결과

 - Scalars, Images, Audio, Graphs, Distributions, historgrams, Embeddings 등 확인 가능

 

4. TensorBoard에서 다양한 조건 실행결과 비교

 - 서로 다른 파일에 로그를 저장하여, 다른 조건에서 실행한 결과를 비교 가능 (ex. learning rate를 달리한 경우)

반응형
Posted by CCIBOMB
Deep Learning2019. 12. 23. 23:02
반응형

 김성훈 교수님의 [모두를 위한 딥러닝] 강의 정리

 - https://www.youtube.com/watch?reload=9&v=BS6O0zOGX4E&feature=youtu.be&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&fbclid=IwAR07UnOxQEOxSKkH6bQ8PzYj2vDop_J0Pbzkg3IVQeQ_zTKcXdNOwaSf_k0

 - 참고자료 : Andrew Ng's ML class

  1) https://class.coursera.org/ml-003/lecture

  2) http://holehouse.org/mlclass/ (note)

 

1. XOR 알고리즘을 딥러닝으로 풀기 (원리)

 - 논리적으로 매우 간단하지만 초창기 Neural Network에 큰 난관이 됨

 - 하나의 Neural Network unit으로는 XOR 문제를 풀 수 없음 (수학적 증명)

 - 그러나, 여러개의 Neural Network unit으로 XOR 문제 해결이 가능함

 - 위의 unit을 하나로 합쳐서 표시하면, 다음과 같음

 - 여러개의 logistic regression을 하나의 multinomial classification으로 변환 (행렬 이용)

 - 복잡한 네트워크의 weight, bias는 학습이 불가능한 문제가 있었으나, backpropagation으로 해결 가능함

 - 여러 개의 노드들이 있어 복잡한 경우에도 동일함

 

2. Sigmoid (시그모이드)

 - Logistic regression 또는 Neural network의 Binary classification 마지막 레이어의 활성함수로 사용

 - 시그모이드 함수의 그래프

 - 시그모이드 함수의 미분 (뒤에서부터 순서대로 미분해 나가면 됨)

 - Back propagation 미분을 위한 'TensorFlow'에서의 구현 방식 확인 (TensorBoard에서 확인 가능)

 

3. XOR 알고리즘을 딥러닝으로 풀기 (TensorFlow 구현)

 (1) XOR 문제를 logistic regression으로 풀기

 - 전체 소스코드

import tensorflow as tf
import numpy as np
 
tf.set_random_seed(777) # for reproducibility
 
x_data = np.array([[0, 0], [0, 1], [1, 0], [1, 1]], dtype=np.float32)
y_data = np.array([[0], [1], [1], [0]], dtype=np.float32)
 
X = tf.placeholder(tf.float32, [None, 2])
Y = tf.placeholder(tf.float32, [None, 1])
 
W = tf.Variable(tf.random_normal([2, 1]), name="weight")
b = tf.Variable(tf.random_normal([1]), name="bias")
 
# Hypothesis using sigmoid: tf.div(1., 1. + tf.exp(tf.matmul(X, W)))
hypothesis = tf.sigmoid(tf.matmul(X, W) + b)
 
# cost/loss function
cost = -tf.reduce_mean(Y * tf.log(hypothesis) + (1 - Y) * tf.log(1 - hypothesis))
train = tf.train.GradientDescentOptimizer(learning_rate=0.1).minimize(cost)
 
# Accuracy computation
# True if hypothesis>0.5 else False
predicted = tf.cast(hypothesis > 0.5, dtype=tf.float32)
accuracy = tf.reduce_mean(tf.cast(tf.equal(predicted, Y), dtype=tf.float32))
 
# Launch graph
with tf.Session() as sess:
# Initialize TensorFlow variables
sess.run(tf.global_variables_initializer())
 
for step in range(10001):
_, cost_val, w_val = sess.run(
[train, cost, W], feed_dict={X: x_data, Y: y_data}
)
if step % 100 == 0:
print(step, cost_val, w_val)
 
# Accuracy report
h, c, a = sess.run(
[hypothesis, predicted, accuracy], feed_dict={X: x_data, Y: y_data}
)
print("\nHypothesis: ", h, "\nCorrect: ", c, "\nAccuracy: ", a)

 

 - 결과값

Hypothesis: [[ 0.5]
[ 0.5]
[ 0.5]
[ 0.5]]
Correct: [[ 0.]
[ 0.]
[ 0.]
[ 0.]]
Accuracy: 0.5

 

 (2) XOR 문제를 Neural Net으로 풀기

 - 기존의 소스코드와 동일하나 L1, W2, b2 부분 유의

 - 상기 부분만 수정하였음에도 정확도가 100%로 향상됨

 - 전체 소스코드

import tensorflow as tf
import numpy as np
 
tf.set_random_seed(777) # for reproducibility
 
x_data = np.array([[0, 0], [0, 1], [1, 0], [1, 1]], dtype=np.float32)
y_data = np.array([[0], [1], [1], [0]], dtype=np.float32)
 
X = tf.placeholder(tf.float32, [None, 2])
Y = tf.placeholder(tf.float32, [None, 1])
 
W1 = tf.Variable(tf.random_normal([2, 2]), name='weight1')
b1 = tf.Variable(tf.random_normal([2]), name='bias1')
layer1 = tf.sigmoid(tf.matmul(X, W1) + b1)
 
W2 = tf.Variable(tf.random_normal([2, 1]), name='weight2')
b2 = tf.Variable(tf.random_normal([1]), name='bias2')
hypothesis = tf.sigmoid(tf.matmul(layer1, W2) + b2)
 
# cost/loss function
cost = -tf.reduce_mean(Y * tf.log(hypothesis) + (1 - Y) * tf.log(1 - hypothesis))
train = tf.train.GradientDescentOptimizer(learning_rate=0.1).minimize(cost)
 
# Accuracy computation
# True if hypothesis>0.5 else False
predicted = tf.cast(hypothesis > 0.5, dtype=tf.float32)
accuracy = tf.reduce_mean(tf.cast(tf.equal(predicted, Y), dtype=tf.float32))
 
# Launch graph
with tf.Session() as sess:
# Initialize TensorFlow variables
sess.run(tf.global_variables_initializer())
 
for step in range(10001):
_, cost_val = sess.run([train, cost], feed_dict={X: x_data, Y: y_data})
if step % 100 == 0:
print(step, cost_val)
 
# Accuracy report
h, p, a = sess.run(
[hypothesis, predicted, accuracy], feed_dict={X: x_data, Y: y_data}
)
 
print(f"\nHypothesis:\n{h} \nPredicted:\n{p} \nAccuracy:\n{a}")

 

 - 결과값

Hypothesis:
[[0.01338216]
[0.98166394]
[0.98809403]
[0.01135799]]
Predicted:
[[0.]
[1.]
[1.]
[0.]]
Accuracy:
1.0
'''

 

 (3) XOR 문제를 Wide Neural Net으로 풀기

 - Layer의 입력값이 많아지도록 하여, 이미지의 출력값을 증가시킴 -> Hypothesis가 향상됨 (Cost가 줄어듬)

 - Wide하거나 Deep하게 학습을 시키는 경우 Cost 값이 대부분 작아짐

 - 그러나 너무 잘 맞게 학습되는 경우, Overfitting 현상이 발생 가능함

 

 (4) XOR 문제를 Deep Neural Net으로 풀기

 - NN과 동일한 방법으로 단계를 여러번 반복함

 

반응형
Posted by CCIBOMB
Deep Learning2019. 12. 18. 23:04
반응형

 김성훈 교수님의 [모두를 위한 딥러닝] 강의 정리

 - https://www.youtube.com/watch?reload=9&v=BS6O0zOGX4E&feature=youtu.be&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&fbclid=IwAR07UnOxQEOxSKkH6bQ8PzYj2vDop_J0Pbzkg3IVQeQ_zTKcXdNOwaSf_k0

 - 참고자료 : Andrew Ng's ML class

  1) https://class.coursera.org/ml-003/lecture

  2) http://holehouse.org/mlclass/ (note)

 

1. Shape, Rank, Axis

 - Rank : 행렬의 차원(dimension). 1차원인 경우 1, 2차원인 경우 2.

            대괄호 '['의 개수를 세면 됨

 - Axis : 축. 가장 바깥 대괄호의 axis = 0 가장 안쪽의 axis = rank -1

 - Shape : 행렬의 구조. 행렬 형태의 표시방법(행렬츼 차원 및 요소가 몇개인지)

 

 

2. Broadcasting # 사용시 유의!

 

3. Reduce mean, Reduce sum

 - integer 인지 float 인지에 따라 결과값 달라짐을 주의해야 함

 - axis(축)에 따라 결과값 달라짐도 주의해야 함

 

4. Argmax

 - 가장 큰 값이 있는 위치를 구함

 

5. Reshape

 - reshape은 원하는 shape를 직접 입력하여 바꿀 수 있음

 - shape에 -1을 입력하면 고정된 차원을 채우고 남은 부분을 알아서 채워줌

 

 - Reshape (squeeze, expand)

   squeeze : 차원 중 사이즈가 1인 것을 찾아 스칼라값으로 바꿔 해당 차원을 제거함

   expand_dims : axis로 지정된 차원을 추가함

 

6. One hot

 - 입력받은 행렬보다 마지막에 한차원이 증가함

 - reshape을 통해 다시 증가한 차원을 줄여줄 수 있음 

 

7. Casting

 - Tensor를 새로운 형태로 캐스팅하는데 사용함

 - 부동소수점형(float)에서 정수형(int)으로 바꾼 경우 소수점 버림

 - Boolean 형태인 경우 True이면 1, False이면 0을 반환

 

8. Stack

 - 여러 조각의 행렬을 합침

 - axis = 0 / axis = 1에 따라 stack을 쌓는 방식이 달라짐

 

9. ones_like, leros_like

 - 주어진 shape과 동일하게 0 또는 1을 채운 행렬을 만듦

 

10. Zip

 - 여러 개의 Tensor를 한번에 추출

반응형
Posted by CCIBOMB
Deep Learning2019. 12. 18. 22:28
반응형

 김성훈 교수님의 [모두를 위한 딥러닝] 강의 정리

 - https://www.youtube.com/watch?reload=9&v=BS6O0zOGX4E&feature=youtu.be&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&fbclid=IwAR07UnOxQEOxSKkH6bQ8PzYj2vDop_J0Pbzkg3IVQeQ_zTKcXdNOwaSf_k0

 - 참고자료 : Andrew Ng's ML class

  1) https://class.coursera.org/ml-003/lecture

  2) http://holehouse.org/mlclass/ (note)

 

1. MNIST Dataset

 - 숫자 0~9까지의 손글씨 이미지의 집합

 - 학습데이터 60,000개, 테스트데이터 10,000개로 구성

 - 사이즈는 28 x 28, 이미지의 값은 0 또는 1 (흑 또는 백)

 - preprocessing, formatting이 모두 완료된 데이터셋

 - 다운로드 주소 : http://yann.lecun.com/exdb/mnist/

 

2. TensorFlow에서 MNIST Dataset 불러오기 using input_data.py

 - 다운로드 주소 : https://github.com/tensorflow/tensorflow/blob/r0.7/tensorflow/examples/tutorials/mnist/input_data.py

from tensorflow.examples.tutorials.mnist import input_data
 
# Check out https://www.tensorflow.org/get_started/mnist/beginners for
# more information about the mnist dataset
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
 
nb_classes = 10
 
# MNIST data image of shape 28 * 28 = 784
X = tf.placeholder(tf.float32, [None, 784])
# 0 - 9 digits recognition = 10 classes
Y = tf.placeholder(tf.float32, [None, nb_classes])
 
W = tf.Variable(tf.random_normal([784, nb_classes]))
b = tf.Variable(tf.random_normal([nb_classes]))

 

3. Softmax

# Hypothesis (using softmax)
hypothesis = tf.nn.softmax(tf.matmul(X, W) + b)
 
cost = tf.reduce_mean(-tf.reduce_sum(Y * tf.log(hypothesis), axis=1))
train = tf.train.GradientDescentOptimizer(learning_rate=0.1).minimize(cost)
 
# Test model
is_correct = tf.equal(tf.argmax(hypothesis, 1), tf.argmax(Y, 1))
# Calculate accuracy
accuracy = tf.reduce_mean(tf.cast(is_correct, tf.float32))

 

4. Training epoch/batch

 - epoch : 전체 training set을 1회 학습

 - batch : 1 epoch을 나누어서 실행하기 위한 사이즈

# parameters
num_epochs = 15
batch_size = 100
num_iterations = int(mnist.train.num_examples / batch_size)
 
with tf.Session() as sess:
# Initialize TensorFlow variables
sess.run(tf.global_variables_initializer())
# Training cycle
for epoch in range(num_epochs):
avg_cost = 0
 
for i in range(num_iterations):
batch_xs, batch_ys = mnist.train.next_batch(batch_size)
_, cost_val = sess.run([train, cost], feed_dict={X: batch_xs, Y: batch_ys})
avg_cost += cost_val / num_iterations
 
print("Epoch: {:04d}, Cost: {:.9f}".format(epoch + 1, avg_cost))
 
print("Learning finished")

 

5. Report results on test dataset

# Test the model using test sets
print(
"Accuracy: ",
accuracy.eval(
session=sess, feed_dict={X: mnist.test.images, Y: mnist.test.labels}
),
)

 

6. Sample image show and prediction

# Get one and predict
r = random.randint(0, mnist.test.num_examples - 1)
print("Label: ", sess.run(tf.argmax(mnist.test.labels[r : r + 1], 1)))
print(
"Prediction: ",
sess.run(tf.argmax(hypothesis, 1), feed_dict={X: mnist.test.images[r : r + 1]}),
)
 
plt.imshow(
mnist.test.images[r : r + 1].reshape(28, 28),
cmap="Greys",
interpolation="nearest",
)
plt.show()

 

7. 전체 소스코드

import tensorflow as tf
import matplotlib.pyplot as plt  # matplotlib : 이미지를 다루는 라이브러리
import random  # random : W와 b에 임의 값을 주는 역할
 
tf.set_random_seed(777) # for reproducibility
 
from tensorflow.examples.tutorials.mnist import input_data
 
# Check out https://www.tensorflow.org/get_started/mnist/beginners for
# more information about the mnist dataset
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)  # MNIST Dataset 다운로드
 
nb_classes = 10  # 10개 label(0~9) 분류
 
# MNIST data image of shape 28 * 28 = 784 (이미지 feature 784개)
X = tf.placeholder(tf.float32, [None, 784])
# 0 - 9 digits recognition = 10 classes (이미지와 매칭되어 있는 label(정답) 10종류)
Y = tf.placeholder(tf.float32, [None, nb_classes])
 
W = tf.Variable(tf.random_normal([784, nb_classes]))  # W, b : 랜덤으로 값 지정
b = tf.Variable(tf.random_normal([nb_classes]))
 
# Hypothesis (using softmax)
hypothesis = tf.nn.softmax(tf.matmul(X, W) + b)  # 가설함수 H(X)를 softmax에 대입
 
cost = tf.reduce_mean(-tf.reduce_sum(Y * tf.log(hypothesis), axis=1))  # Cross-Entropy를 이용한 cost
train = tf.train.GradientDescentOptimizer(learning_rate=0.1).minimize(cost)  # Gradient Descent Algorithm을 이용한 cost 최소화
 
# Test model : 정답(label)과 H(X)의 예상결과 비교
is_correct = tf.equal(tf.argmax(hypothesis, 1), tf.argmax(Y, 1))
# Calculate accuracy : 정확도 측정
accuracy = tf.reduce_mean(tf.cast(is_correct, tf.float32))
 
# parameters
num_epochs = 15  # 전체 이미지를 15회 반복 학습
batch_size = 100  # 학습 이미지 파일이 많아서 100개씩 가져옴
num_iterations = int(mnist.train.num_examples / batch_size)
 
with tf.Session() as sess:
# Initialize TensorFlow variables : TensorFlow 변수 초기화 및 세션 시작
sess.run(tf.global_variables_initializer())
# Training cycle
for epoch in range(num_epochs):
avg_cost = 0
 
for i in range(num_iterations):
batch_xs, batch_ys = mnist.train.next_batch(batch_size)  # Training 데이터를 X와 Y에 너헝줌
_, cost_val = sess.run([train, cost], feed_dict={X: batch_xs, Y: batch_ys})  # 학습과정의 cost 계산
avg_cost += cost_val / num_iterations
 
print("Epoch: {:04d}, Cost: {:.9f}".format(epoch + 1, avg_cost))  # 1회 학습당 cost 결과 출력
 
print("Learning finished")
 
# Test the model using test sets : Test 데이터를 이용하여 label(정답)과 비교. 정확도 계산
print(
"Accuracy: ",
accuracy.eval(
session=sess, feed_dict={X: mnist.test.images, Y: mnist.test.labels}
),
)
 
# Get one and predict
r = random.randint(0, mnist.test.num_examples - 1)  # Test 데이터에서 임의의 값을 뽑아서 예측
print("Label: ", sess.run(tf.argmax(mnist.test.labels[r : r + 1], 1)))
print(
"Prediction: ",
sess.run(tf.argmax(hypothesis, 1), feed_dict={X: mnist.test.images[r : r + 1]}),
)
 
plt.imshow(
mnist.test.images[r : r + 1].reshape(28, 28),
cmap="Greys",
interpolation="nearest",
)
plt.show()  # Test 데이터에서 뽑은 이미지 출력

 

반응형
Posted by CCIBOMB
Deep Learning2019. 12. 18. 22:28
반응형

 김성훈 교수님의 [모두를 위한 딥러닝] 강의 정리

 - https://www.youtube.com/watch?reload=9&v=BS6O0zOGX4E&feature=youtu.be&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&fbclid=IwAR07UnOxQEOxSKkH6bQ8PzYj2vDop_J0Pbzkg3IVQeQ_zTKcXdNOwaSf_k0

 - 참고자료 : Andrew Ng's ML class

  1) https://class.coursera.org/ml-003/lecture

  2) http://holehouse.org/mlclass/ (note)



1. 딥러닝의 기본 개념

 

2. 딥러닝을 위한 '학습'의 불가능성 주장 by Marvin Minsky

 - XOR 문제풀이 불가

 

3. 딥러닝을 위한 '학습'의 가능성 주장 = Backpropagation by Paul Werbos, Hinton

 

4. Convolutional Neural Networks (알파고) by LeCun

 

5. 복잡한 문제(많은 레이어)의 경우 학습 불가

 - neormal neural nets가 성능 향상이 되지 않는 문제가 발생

 

6. 적절한 W 초기값을 통해 학습 가능 주장 by Hinton and Bengio

 - 기존의 neural network를 deep nets, deep learning으로 리브랜딩

 - 딥러닝은 복잡한 문제를 해결하기 위한 효과적인 수단

 

 

반응형
Posted by CCIBOMB
Who am I ?!/Pleasure2019. 12. 18. 21:23
반응형

스마외 비슈누-데바난다의 건강한 삶을 위한 다섯 가지 원리

 

올바른 이완

근육의 긴장을 풀어 온몸에 휴식을 주고 신선함을 주어 

숙면에 이르게 하며 

모든 행동을 근심과 공포로부터 활기차고 원기 있는 삶으로 전환한다.



올바른 자세

요가 자세를 통하여 

몸의 각 부분들을 체계적으로 발전시키고 

근육과 인대를 늘이고 조여 활기 있게 만들며 

척추와 모든 연결부분을 부드럽게 하여 

몸의 순환을 더욱 원활하게 한다.



올바른 호흡

폐의 모든 부분을 충분히 사용한 리드미컬한 호흡을 함으로써, 

몸의 모든 기능에 산소를 공급해주어 부드럽게 한다. 

요가 호흡 또는 프라나야마는 

생명의 힘인 프라나의 흐름을 규칙적으로 하여 정신을 통제하고 몸을 재충전한다.

 

알맞은 음식

풍부하고 조화로운 자연식을 섭취하여 

몸을 더욱 생기있게 하고 마음을 고요하게 하며 

질병으로부터 예방한다.

 

긍정적인 생각과 명상

부정적인 생각을 제거하고 마음을 안정시켜 

궁극적으로 모든 생각들을 초월한 깨달음에 이른다.

 

*출처: The New Book of Yoga by 시바난다 요가 베단타 센터

반응형

'Who am I ?! > Pleasure' 카테고리의 다른 글

[요가] 라자 요가(Raja Yoga)  (0) 2019.12.18
Posted by CCIBOMB