반응형

<2019. 11. 10.>

제주 - 김포 - 인천 - 로마 - 상파울루

과률루스 국제공항 - 봉헤찌로 - 쎄성당 - 총영사관 - 장미의집(CASA das ROSAS)

- 파울리스타 거리(치즈빵 - 한국문화원 - 공용자전거 - 마스피 - 상파울루 지하철 - Radisson Paulista Plaza 호텔)

- 산토스해변 - 바베큐(pit stop master)

 

주 상파울루 총영사관 경찰영사님께서 데려가주신 상파울루 레스토랑 'Pit Stop Master'

 

주차장은 널찍하다.

 

샐러드바 이용가능

 

 

직원들이 긴 꼬챙이에 꽂은 바베큐를 부위별로 가지고 돌아다니며,

원하는 사람들에게 원하는 만큼 그때그때 칼로 잘라준다.

그 고기를 집게로 집어 내 접시에 덜어먹으면 된다.

자리에 앉으면 아래의 동그란 카드를 주는데,

초록색 면을 테이블 위에 올려놓으면 고기를 달라는 뜻이고(Yes, Please. / Sim, Por Favor),

빨간색 면을 테이블 위에 올려놓으면 그만 달라는 뜻이다(No, Thanks. / Nao, Obrigado).

 

 

위치 : Av. Pres. Castelo Branco, 3345A - 1 - Pte. Pequena, São Paulo - SP, 01142-300 브라질

https://g.page/pitstopmaster/

 

Pit Stop Master on Google

Find out more about Pit Stop Master by following them on Google

g.page

 

반응형
Posted by CCIBOMB
반응형

<2019. 11. 10.>

제주 - 김포 - 인천 - 로마 - 상파울루

과률루스 국제공항 - 봉헤찌로 - 쎄성당 - 총영사관 - 장미의집(CASA das ROSAS)

- 파울리스타 거리(치즈빵 - 한국문화원 - 공용자전거 - 마스피 - 상파울루 지하철 - Radisson Paulista Plaza 호텔)

- 산토스해변 - 히나 레스토랑



상파울루 시와 같은 상파울루 주 내에 있는 산토스 항구도시.

펠레의 고향이며, 상파울루주의 대표항인 산토스는 커피원두의 수출통로로 큰 역할을 하기도 했다.

산토스에스는 당시 커피 경매가 이루어졌던 지금의 커피 박물관도 있다.

 

브라질의 예쁜 바다들에 비하면 물이 깨끗하거나 그리 예쁜 편은 아니지만, 

상파울루 시내에서 가장 가까운 바다인 만큼 싱싱한 해산물을 먹고 즐기기에는 충분하다.

 

하필 산토스에 도착할 즘엔 흐린 날씨를 넘어서 비바람이 몰아쳐 아쉬움이 컸다.

 

 

식사를 하고나니 그래도 비는 그쳐, 아쉬운대로 해변을 거닐어볼 수 있었다.

제주의 해변과는 달리 정말 길게 뻗은 백사장을 볼 수 있었다.

백사장을 따라서 옆에는 잔디와 나무로 길게 공원을 잘 조성해 놓았다.

산토스 해변은 깨끗한 바닷물은 아니어서 관광객들 보다는, 동네 주민들이 많이 찾는다고 한다.

특히 금요일이나 날씨 좋은 주말에는 해수욕을 즐기는 사람들이 꽤 많다고-

 

 

백사장 주변에는 우리나라 포장마차처럼 거리의 '바'가 있었다.

날씨가 좋을 때면, 이곳에 모여 맥주 한잔씩 걸치는 사람들로 붐빈다고 한다.

 

위치 :  https://goo.gl/maps/YEdYGgvjiuDzZmPs8

 

산토스

브라질 상파울루 주 산투스

www.google.com

 

 

'히나 피시 앤 라운지'에서는 해산물을 포함한 다양한 음식들을 맛볼 수 있었다.

나름 분위기 있는 레스토랑. 

(대한민국 총영사관과 브라질 해군간 간담회 후 식사도 이곳에서 하셨다고.. ^^)

주차는 레스토랑 옆 지하주차장에 하면 된다.

 

레스토랑 내부 분위기

 

 

 

상당히 내 입맛에 잘 맞았다. 상파울루에 있는 내내 음료는 과라냐만 마셨다.

진저비어와 비슷한 느낌이긴 한데 독특했다.

청량감도 적당하고 오렌지 한조각을 넣어서 마시니 더 깔끔한 느낌.

 

'과라나'라는 과일은 브라질 원산지로, 붉은색을 띠며 

음료는 열매의 검은 씨앗(카페인이 매우 풍부하여, 커피의 약 2배정도)을 갈고, 설탕을 넣어서 만든다고 한다.

핫식스나 레드불 등 에너지드링크를 보면 과라나 함유라고 기재되어 있다.

과라나의 어원은 과라니어의 guara-ná와 투피과라니어로 warana로

그 뜻은 인간의 눈과 닮은 과일이라는 뜻이라고 한다.

실제로 인간의 눈과 비슷하게 생겼다.

※ 출처: 나무위키 (namu.wiki/w/과라나)

 

위치 : Av. Alm. Saldanha da Gama, 44 - Ponta da Praia, Santos - SP, 11030-401 브라질 'Hina Fish & Lounge'

https://goo.gl/maps/81uXuexeA37Uhxsi9

 

Hina Fish & Lounge

★★★★★ · 지중해식 음식점 · Av. Alm. Saldanha da Gama, 44

www.google.com

 

반응형
Posted by CCIBOMB
반응형

<2019. 11. 10.>

제주 - 김포 - 인천 - 로마 - 상파울루

과률루스 국제공항 - 봉헤찌로 - 쎄성당 - 총영사관 - 장미의집(CASA das ROSAS)

- 파울리스타 거리(치즈빵 - 한국문화원 - 공용자전거 - 마스피 - 상파울루 지하철 - Radisson Paulista Plaza 호텔)

- 산토스해변



주 상파울루 대한민국 총영사관 바로 길 건너에 위치한 Radisson Paulista Plaza 호텔

파울리스타 거리와 가까워 주변이 깨끗하고 치안도 좋은 편인 동네라고 한다.

주변에 까르푸등 마켓도 있어 위치가 상당히 좋은 것 같다.

까르푸에서 애플망고를 5헤알(약 1,500원)이면 사먹을 수 있었다.

 

수영장은 좀 작고 주변이 빌딩숲이라 아쉬운 뷰이긴 하지만, 그래도 있다는데 의의가 있다고 생각한다.

날씨가 흐려서인지, 숙박기간 중 이용하는 사람들을 한명도 보지 못했다.

 

호텔 내부는 깔끔했고, 조식은 빵종류가 많았다.

빵은 종류별로 상당히 맛있었다.

 

위치 : Alameda Santos, 85 - Paraíso, São Paulo - SP, 01419-000 브라질

https://goo.gl/maps/aoxn6zgm4ssHrxSw7

 

Radisson Paulista Plaza

★★★★☆ · 호텔 · Alameda Santos, 85

www.google.com

 

반응형
Posted by CCIBOMB
반응형

<2019. 11. 10.>

제주 - 김포 - 인천 - 로마 - 상파울루

과률루스 국제공항 - 봉헤찌로 - 쎄성당 - 총영사관 - 장미의집(CASA das ROSAS)

- 파울리스타 거리(치즈빵 - 한국문화원 - 공용자전거 - 마스피 - 상파울루 지하철 - Radisson Paulista Plaza 호텔)

- 산토스해변

 

마스삐에서 다시 총영사관까지는 상파울루 지하철을 이용해보았다.

Trianon-Masp 역에서 초록색 2호선을 타고, Brigadeiro 역까지 환승없이 한번에 이동.

 

지하철은 생각보다 많이 깨끗했다.

지하철 이용비용은 목적지 관계없이 4헤알로 동일하다.

브라질어(포르투갈어, 소위 '포어')를 못해도 '1명'이라고만 하고 '4헤알'만 주면 티켓을 준다.

입장시에만 티켓을 기계에 넣고, 나올때에는 그냥 나오면 된다.

 

2호선, 초록색 라인이 다른 노선들보다 더 깨끗한 편이라고 한다.

 

대한민국 총영사관, 장미의집에서 가장 가까운 지하철역, Brigadeiro역(초록색, 2호선)

 

반응형
Posted by CCIBOMB
반응형

<2019. 11. 10.>

제주 - 김포 - 인천 - 로마 - 상파울루

과률루스 국제공항 - 봉헤찌로 - 쎄성당 - 총영사관 - 장미의집(CASA das ROSAS)

- 파울리스타 거리(치즈빵 - 한국문화원 - 공용자전거 - 마스피 - 상파울루 지하철 - Radisson Paulista Plaza 호텔)

- 산토스해변

 


상파울루 미술관 MASP(마스삐)까지 걸어갔다.

네 개의 빨간 기둥으로 이루어진 건물 외관이 독특하다.

세계에서 기둥과 기둥 사이가 갖아 먼 건물로 유명하다고 한다.

상파울루 마스피 미술관은 세계 5대 미술관으로 인정받는다.

 

주말이라 마스피 1층에서는 벼룩시장이 열렸다.

(평일에는 없다고 한다.)

 

미술관 1층에는 군경들이 경비를 서고 있었다.

브라질 경찰은 군경과 민경(상파울루 주 헌법기관),

그리고 연방경찰(밀수, 마약분야, 정치범죄, 선거범죄 등 국가관할, 브라질 헌법기관)로 이루어져있다.

 

군경은 이와 같이 제복을 입고 순찰(우리나라의 112 역할), 경비 등을 서고, 공공의 질서유지를 담당한다.

군경은 군경대학(4년제)을 나와 파출소 부소장급으로 부임을 하거나, 

군경시험(학력제한 없음)을 보아서 병사급으로 부임할 수 있다.

군경은 육군의 보조병력 또는 예비병력으로서, 유사시 육군 보조병력으로 동원된다.

우리나라의 경찰서에 해당하는 '대대'가 있고, '대대장'은 지역본부장의 지휘 하에 관할 지역 내의 치안유지를 담당한다.

우리나라의 파출소나 지구대에 해당하는 것은 없으나, 각 대대 소속의 교통감시소나 교통검문소가 있다.

 

민경은 사복을 입고 민생과 지능범죄 수사를 담당한다.

군경이 지능범을 검거하면 민경으로 넘겨 수사를 진행한다.

민경은 연방경찰의 관할 분야를 제외하고 주 내의 형사상 위법 적발 및

교통사고를 포함한 모든 범죄의 수사, 단속을 담당하고 있다.

단, 군인의 형사위반은 대상이 아니라고 한다.

 

군경과 민경은 학력제한이 없어 대학을 나오지 않아도 지원이 가능하다.

또한 일반 경찰관의 사회적 지위가 낮은 편이고, 급여가 적기 때문에 인기가 없다고 한다.

 

상파울루 주뿐만 아니라 브라질 전역을 커버하는 연방경찰은 학력제한이 있어

대학교 법학과를 졸업하여야 한다고 한다.

군경과 시경은 상파울루 주에서 관리를 하고, 연방경찰은 브라질 정부에서 관리를 한다.

군경과 시경은 급여가 매우 적은 편이나, 연방경찰은 그에 비해 상당히 많은 급여를 받고 대우도 좋다고 한다.

(by 브라질 영사관에서 연방경찰시험을 준비하는 행정원 曰)

 

 

위치 : Av. Paulista, 1578 - Bela Vista, São Paulo - SP, 01310-200 브라질

https://goo.gl/maps/iFPKvz4rJHEoNA2k7

 

상파울루 미술관

★★★★★ · 미술관 · Av. Paulista, 1578

www.google.com

 

길 건너엔 Trianon 공원이 있다. 

크기는 많이 크지 않으나 열대우림이 우거져 있어 산책길로 좋은 것 같다.

마지막날 아침 조깅코스로 들러보기로-

 

위치 : Rua Peixoto Gomide, 949 - Cerqueira César, São Paulo - SP, 01409-001 브라질

https://goo.gl/maps/QAdg3ag84X9eAjak7

 

Trianon Park

★★★★★ · 공원 · Rua Peixoto Gomide, 949

www.google.com

 

반응형
Posted by CCIBOMB
반응형

<2019. 11. 10.>

제주 - 김포 - 인천 - 로마 - 상파울루

과률루스 국제공항 - 봉헤찌로 - 쎄성당 - 총영사관 - 장미의집(CASA das ROSAS)

- 파울리스타 거리(치즈빵 - 한국문화원 - 공용자전거 - 마스피 - 상파울루 지하철 - Radisson Paulista Plaza 호텔)

- 산토스해변

 

상파울루 '공공자전거'

신기하게 itau 라는 브라질 은행 로고가 떡 하니 박혀있다.

상파울루 시내 곳곳에 정류장이 있다.

그런데 타고 다니는 사람에 비해 자전거가 많이 비어 있다는 느낌을 받았다.

 

 

이용하려면 앱스토어에서 'Bike Itau'를 설치하면 된다.

자전거 정류장이 어디에 있는지 등등 전부 확인이 가능하다. 

72시간동안 60분 사용시 15헤알 (약 4,500원), 24시간동안 60분 사용시 8헤알 (약 2,400원) 상당이다.

 

 

반응형
Posted by CCIBOMB
반응형

<2019. 11. 10.>

제주 - 김포 - 인천 - 로마 - 상파울루

과률루스 국제공항 - 봉헤찌로 - 쎄성당 - 총영사관 - 장미의집(CASA das ROSAS)

- 파울리스타 거리(치즈빵 - 한국문화원 - 공용자전거 - 마스피 - 상파울루 지하철 - Radisson Paulista Plaza 호텔)

- 산토스해변

 

파울리스타 거리(Av. Paulista)

상파울루 파울리스타 거리는 60년대부터 90년대까지 남미 최대의 금융가였다고 한다.

시내에서 가장 높은 곳에 위치해 있으며, 

외국영사관, MASP, 은행과 각종 회사 등 고층 빌딩들이 들어서있다.

 

이곳에서 처음 먹는 브라질 아침식사^^


브라질의 평범한 아침식사 스타일: 치즈빵 + 커피

파울리스타 거리의 Rei do Mate에 들러, 브라질에서 많이 먹는 치즈빵과 라떼를 한잔 주문했다.

Rei do Mate는 1978년 브라질 상파울루시에서 오픈한 작은 카페에서 시작하여,

지금은 브라질 전역에 다수의 체인점을 가지고 있다.

치즈빵은 맛있다. 

치즈빵의 브라질 이름은 "Pão de Queijo"

짭쪼름한 치즈맛과 함께 쫄깃쫄깃한 깨찰빵 비슷한 느낌에, 겉은 바삭하다.

브라질 여행 중 가장 생각나는 메뉴를 하나 고르라면, 이 치즈빵을 고를 것 같다.

이 치즈빵은 길모퉁이마다 있는 어느 Bar를 가도 볼 수 있었다.

따뜻한 커피와 따뜻하고 쫀득한 치즈빵은 정말 잘 어울린다.

 

최근, 상파울루 시내 중심가인 아베니다 파울리스타(Avenida Paulista)로 위치를 옮긴 '브라질 한국문화원'

(원장님이신 권영상 영사님을 여행 마지막날 봉헤찌로 오뚜기 슈퍼 앞에서 우연히 만나 인사를 나눌 수 있었다.)

매주 일요일과 공휴일마다 차량 전면통제하고 '문화의 거리'로 바뀌는 곳에 한국문화원을 옮긴 것은 잘한 것 같다.

(브라질 한국문화원은 2013. 10.경 문을 열었으나 도심에 떨어진 곳에 위치해 접근성이 떨어졌었다.)

아쉽다면 일본문화원과 달리 건물외관에서부터 한국의 멋을 표현하지는 못하고 있다는 것-

내부에는 한국문화 관련 다양한 책과 음악, 영화가 있는 도서관, VR-가상체험관,

한글한복한옥 체험실, 전시회장 등이 있고,

한국어, 한국음식, K-POP, 사물놀이, 태권도 등의 강좌가 개설된다.

강좌/세미나 개최공고 : http://brazil.korean-culture.org/ko/439/board/184/list

 

브라질 재외한국문화원

 

brazil.korean-culture.org

 

을지로, 상당동 MBC미디어센터 앞에서 많이 본적 있는 그리팅맨(greeting man, 인사하는 사람)도 있다.

조각가 유영호씨의 작품으로 고개를 15도 숙이고 인사하는 하늘색 남자 조형물이다.

찾아보니 그리팅맨은, 파주 해이리, 제주도와 강원 양구,

그리고 해외에 우루과이, 에콰도르, 파나마에도 있다고 한다.

이 그리팅맨은 순도 99%의 알루미늄 재료로 제작됐으며

무게는 1t, 높이는 3.5m라고 한다.

그동안 설치된 그리팅맨은 높이가 6m였는데 이번엔 주변 경관에 어울리도록 3.5m로 축소했다고 하는데,

개인적으로는 6m의 웅장한 느낌이 시선을 끌기에는 더 좋지 않았을까 하는 생각도 든다.

 

위치 : Av. Paulista, 460 - Bela Vista, São Paulo - SP, 01311-000 브라질

https://goo.gl/maps/ZcsfcxrswhLA8ahU8

 

Centro Cultural Coreano

★★★★★ · 문화센터 · Av. Paulista, 460

www.google.com

 

반응형
Posted by CCIBOMB
Deep Learning2019. 11. 21. 19:53
반응형

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

 - 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. Hypothesis and Cost

 - 기존 Hypothesis and Cost

 

 - 단순화한 Hypothesis and Cost

 

2. Gradient descent algorithm

 - cost 최소화 등 많은 최소화 문제 해결에 활용되는 알고리즘

 - cost(W,b)의 경우, cost를 최소화하는 W, b 값을 찾아냄

 - 미분을 하여 기울기가 최소가 되는 점이 cost가 최소가 되는 점

 - linear regression을 사용할 때, cost function이 convex function(볼록함수)이 되는지 확인해야 함

   -> 그래야 정확한 값 획득 가능

 

3. Linear Regression의 cost 최소화의 Tensorflow 구현

import tensorflow as tf
import matplotlib.pyplot as plt // "pip install matplotlib" 명령어 실행을 통해 사전 설치 필요 (그래프 그려주는 라이브러리)
 
X = [1, 2, 3]
Y = [1, 2, 3]
 
W = tf.placeholder(tf.float32)
 
# Our hypothesis for linear model X * W
hypothesis = X * W
 
# cost/loss function
cost = tf.reduce_mean(tf.square(hypothesis - Y))
 
# Variables for plotting cost function
W_history = []
cost_history = []
 
# Launch the graph in a session.
with tf.Session() as sess:
for i in range(-30, 50):
curr_W = i * 0.1
curr_cost = sess.run(cost, feed_dict={W: curr_W})
 
W_history.append(curr_W)
cost_history.append(curr_cost)
 
# Show the cost function
plt.plot(W_history, cost_history)
plt.show()

 

4. Gradient descent algorithm 적용

 (1) 미분을 이용한 알고리즘 수동 구현

# Minimize: Gradient Descent using derivative: W -= learning_rate * derivative
learning_rate = 0.1 // 알파 값 
gradient = tf.reduce_mean((W * X - Y) * X)
descent = W - learning_rate * gradient
update = W.assign(descent)

 

  - full code

import tensorflow as tf
 
tf.set_random_seed(777) # for reproducibility
 
x_data = [1, 2, 3]
y_data = [1, 2, 3]
 
# Try to find values for W and b to compute y_data = W * x_data
# We know that W should be 1
# But let's use TensorFlow to figure it out
W = tf.Variable(tf.random_normal([1]), name="weight")
 
X = tf.placeholder(tf.float32)
Y = tf.placeholder(tf.float32)
 
# Our hypothesis for linear model X * W
hypothesis = X * W
 
# cost/loss function
cost = tf.reduce_mean(tf.square(hypothesis - Y))
 
# Minimize: Gradient Descent using derivative: W -= learning_rate * derivative
learning_rate = 0.1
gradient = tf.reduce_mean((W * X - Y) * X)
descent = W - learning_rate * gradient
update = W.assign(descent)
 
# Launch the graph in a session.
with tf.Session() as sess:
# Initializes global variables in the graph.
sess.run(tf.global_variables_initializer())
 
for step in range(21):
_, cost_val, W_val = sess.run(
[update, cost, W], feed_dict={X: x_data, Y: y_data}
)
print(step, cost_val, W_val)

 

 (2) 텐서플로우의 Optimizer를 이용한 구현 (굳이 우리가 직접 미분하지 않아도 됨)

#Minimize: Gradient Descent Magic
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.1)
train = optimizer.minimize(cost)

 

  - full code


import tensorflow as tf
tf.set_random_seed(777) # for reproducibility

# tf Graph Input
X = [1, 2, 3]
Y = [1, 2, 3]
W = tf.Variable(tf.random_normal([1], name="weight"))

# Linear model
hypothesis = X * W

# cost/loss function
cost = tf.reduce_mean(tf.square(hypothesis - Y))

# Minimize: Gradient Descent Optimizer
train = tf.train.GradientDescentOptimizer(learning_rate=0.1).minimize(cost)

# Launch the graph in a session.
sess = tf.Session()

# Initializes global variables in the graph.
sess.run(tf.global_variables_initializer())

for step in range(101):
    _, W_val = sess.run([train, W])
    print(step, W_val)

 

 

  - W 초기값을 5로 주었을 때,

import tensorflow as tf
 
# tf Graph Input
X = [1, 2, 3]
Y = [1, 2, 3]
 
# Set wrong model weights
W = tf.Variable(5.0)
 
# Linear model
hypothesis = X * W
 
# cost/loss function
cost = tf.reduce_mean(tf.square(hypothesis - Y))
 
# Minimize: Gradient Descent Optimizer
train = tf.train.GradientDescentOptimizer(learning_rate=0.1).minimize(cost)
 
# Launch the graph in a session.
with tf.Session() as sess:
# Initializes global variables in the graph.
sess.run(tf.global_variables_initializer())
 
for step in range(101):
_, W_val = sess.run([train, W])
print(step, W_val)

 

5. (Optional) Tensoflow의 Gradient 계산 및 적용

import tensorflow as tf
 
# tf Graph Input
X = [1, 2, 3]
Y = [1, 2, 3]
 
# Set wrong model weights
W = tf.Variable(5.)
 
# Linear model
hypothesis = X * W
 
# Manual gradient
gradient = tf.reduce_mean((W * X - Y) * X) * 2
 
# cost/loss function
cost = tf.reduce_mean(tf.square(hypothesis - Y))
 
# Minimize: Gradient Descent Optimizer
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01)
 
# Get gradients
gvs = optimizer.compute_gradients(cost) // optimizer의 gradients 계산
 
# Optional: modify gradient if necessary
# gvs = [(tf.clip_by_value(grad, -1., 1.), var) for grad, var in gvs]
 
# Apply gradients
apply_gradients = optimizer.apply_gradients(gvs) // optimizer의 gradients 적용
 
# Launch the graph in a session.
with tf.Session() as sess:
# Initializes global variables in the graph.
sess.run(tf.global_variables_initializer())
 
for step in range(101):
gradient_val, gvs_val, _ = sess.run([gradient, gvs, apply_gradients])
print(step, gradient_val, gvs_val)

반응형
Posted by CCIBOMB
Deep Learning2019. 11. 21. 18:50
반응형

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

 - 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://www.holehouse.org/mlcass/ (note)



1. (Linear) Hypothesis and cost function

  * Hypothesis : H(x) = Wx + b

  * Cost function(W,b) = ( H(x) - y ) ^ 2  // How fit the line to our (training) data

  * Goal = Minimize cost

 

  2. How to minimize cost

  * 학습 : W,b 값을 조정하여 cost 값을 최소화 하는 과정

 

  (1) 그래프 생성

import tensorflow as tf
 
# X and Y data
x_train = [1, 2, 3]
y_train = [1, 2, 3]
 
# Try to find values for W and b to compute y_data = x_data * W + b
# We know that W should be 1 and b should be 0
# But let TensorFlow figure it out
W = tf.Variable(tf.random_normal([1]), name="weight")   // Variable은 다른 프로그래밍 언어의 변수와는 달리, Tensorflow가 트레이닝을 위해 사용하는 변수임
b = tf.Variable(tf.random_normal([1]), name="bias")
 
# Our hypothesis XW+b
hypothesis = x_train * W + b
 
# cost/loss function
cost = tf.reduce_mean(tf.square(hypothesis - y_train))

 

   * GradientDescent : 학습

# Minimize
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01)
train = optimizer.minimize(cost)

 

  (2) 세션 실행 : 데이터 입력 및 그래프 실행

# Launch the graph in a session.
sess = tf.Session()
# Initializes global variables in the graph.
sess.run(tf.global_variables_initializer())
 
# Fit the line
for step in range(2001):
  sess.run(train)
  if step % 20 == 0:
    print(step, sess.run(cost), sess.run(W), sess.run(b))

 

  (3) 그래프 업데이트 및 결과값 반환 : 학습에 의해 cost를 최소화하는 W, b 값 추론

...

(0, 3.5240757, array([2.1286771], dtype=float32), array([-0.8523567], dtype=float32))
(20, 0.19749945, array([1.533928], dtype=float32), array([-1.0505961], dtype=float32))
(40, 0.15214379, array([1.4572546], dtype=float32), array([-1.0239124], dtype=float32))
(60, 0.1379325, array([1.4308538], dtype=float32), array([-0.9779527], dtype=float32))
(80, 0.12527025, array([1.4101374], dtype=float32), array([-0.93219817], dtype=float32))
(100, 0.11377233, array([1.3908179], dtype=float32), array([-0.8884077], dtype=float32))
(120, 0.10332986, array([1.3724468], dtype=float32), array([-0.8466577], dtype=float32))
(140, 0.093845844, array([1.3549428], dtype=float32), array([-0.80686814], dtype=float32))
(160, 0.08523229, array([1.3382617], dtype=float32), array([-0.7689483], dtype=float32))
(180, 0.07740932, array([1.3223647], dtype=float32), array([-0.73281056], dtype=float32))
(200, 0.07030439, array([1.3072149], dtype=float32), array([-0.6983712], dtype=float32))
(220, 0.06385162, array([1.2927768], dtype=float32), array([-0.6655505], dtype=float32))
(240, 0.05799109, array([1.2790174], dtype=float32), array([-0.63427216], dtype=float32))
(260, 0.05266844, array([1.2659047], dtype=float32), array([-0.6044637], dtype=float32))
(280, 0.047834318, array([1.2534081], dtype=float32), array([-0.57605624], dtype=float32))
(300, 0.043443877, array([1.2414987], dtype=float32), array([-0.5489836], dtype=float32))
(320, 0.0394564, array([1.2301493], dtype=float32), array([-0.5231833], dtype=float32))
(340, 0.035834935, array([1.2193329], dtype=float32), array([-0.49859545], dtype=float32))
(360, 0.032545824, array([1.2090251], dtype=float32), array([-0.47516325], dtype=float32))
(380, 0.029558638, array([1.1992016], dtype=float32), array([-0.45283225], dtype=float32))
(400, 0.026845641, array([1.18984], dtype=float32), array([-0.4315508], dtype=float32))
(420, 0.024381675, array([1.1809182], dtype=float32), array([-0.41126958], dtype=float32))
(440, 0.02214382, array([1.1724157], dtype=float32), array([-0.39194146], dtype=float32))
(460, 0.020111356, array([1.1643128], dtype=float32), array([-0.37352163], dtype=float32))
(480, 0.018265454, array([1.1565907], dtype=float32), array([-0.35596743], dtype=float32))
(500, 0.016588978, array([1.1492316], dtype=float32), array([-0.33923826], dtype=float32))
(520, 0.015066384, array([1.1422179], dtype=float32), array([-0.3232953], dtype=float32))
(540, 0.01368351, array([1.1355343], dtype=float32), array([-0.30810148], dtype=float32))
(560, 0.012427575, array([1.1291647], dtype=float32), array([-0.29362184], dtype=float32))
(580, 0.011286932, array([1.1230947], dtype=float32), array([-0.2798227], dtype=float32))
(600, 0.010250964, array([1.1173096], dtype=float32), array([-0.26667204], dtype=float32))
(620, 0.009310094, array([1.1117964], dtype=float32), array([-0.25413945], dtype=float32))
(640, 0.008455581, array([1.1065423], dtype=float32), array([-0.24219586], dtype=float32))
(660, 0.0076795053, array([1.1015354], dtype=float32), array([-0.23081362], dtype=float32))
(680, 0.006974643, array([1.0967635], dtype=float32), array([-0.21996623], dtype=float32))
(700, 0.0063344706, array([1.0922159], dtype=float32), array([-0.20962858], dtype=float32))
(720, 0.0057530706, array([1.0878822], dtype=float32), array([-0.19977672], dtype=float32))
(740, 0.0052250377, array([1.0837522], dtype=float32), array([-0.19038804], dtype=float32))
(760, 0.004745458, array([1.0798159], dtype=float32), array([-0.18144041], dtype=float32))
(780, 0.004309906, array([1.076065], dtype=float32), array([-0.17291337], dtype=float32))
(800, 0.003914324, array([1.0724902], dtype=float32), array([-0.16478711], dtype=float32))
(820, 0.0035550483, array([1.0690835], dtype=float32), array([-0.1570428], dtype=float32))
(840, 0.0032287557, array([1.0658368], dtype=float32), array([-0.14966238], dtype=float32))
(860, 0.0029324207, array([1.0627428], dtype=float32), array([-0.14262886], dtype=float32))
(880, 0.0026632652, array([1.059794], dtype=float32), array([-0.13592596], dtype=float32))
(900, 0.0024188235, array([1.056984], dtype=float32), array([-0.12953788], dtype=float32))
(920, 0.0021968128, array([1.0543059], dtype=float32), array([-0.12345006], dtype=float32))
(940, 0.001995178, array([1.0517538], dtype=float32), array([-0.11764836], dtype=float32))
(960, 0.0018120449, array([1.0493214], dtype=float32), array([-0.11211928], dtype=float32))
(980, 0.0016457299, array([1.0470035], dtype=float32), array([-0.10685005], dtype=float32))
(1000, 0.0014946823, array([1.0447946], dtype=float32), array([-0.10182849], dtype=float32))
(1020, 0.0013574976, array([1.0426894], dtype=float32), array([-0.09704296], dtype=float32))
(1040, 0.001232898, array([1.0406833], dtype=float32), array([-0.09248237], dtype=float32))
(1060, 0.0011197334, array([1.038771], dtype=float32), array([-0.08813594], dtype=float32))
(1080, 0.0010169626, array([1.0369489], dtype=float32), array([-0.08399385], dtype=float32))
(1100, 0.0009236224, array([1.0352125], dtype=float32), array([-0.08004645], dtype=float32))
(1120, 0.0008388485, array([1.0335577], dtype=float32), array([-0.07628451], dtype=float32))
(1140, 0.0007618535, array([1.0319806], dtype=float32), array([-0.07269943], dtype=float32))
(1160, 0.0006919258, array([1.0304775], dtype=float32), array([-0.06928282], dtype=float32))
(1180, 0.00062842044, array([1.0290452], dtype=float32), array([-0.06602671], dtype=float32))
(1200, 0.0005707396, array([1.0276802], dtype=float32), array([-0.06292368], dtype=float32))
(1220, 0.00051835255, array([1.0263793], dtype=float32), array([-0.05996648], dtype=float32))
(1240, 0.00047077626, array([1.0251396], dtype=float32), array([-0.05714824], dtype=float32))
(1260, 0.00042756708, array([1.0239582], dtype=float32), array([-0.0544625], dtype=float32))
(1280, 0.00038832307, array([1.0228322], dtype=float32), array([-0.05190301], dtype=float32))
(1300, 0.00035268333, array([1.0217593], dtype=float32), array([-0.04946378], dtype=float32))
(1320, 0.0003203152, array([1.0207369], dtype=float32), array([-0.04713925], dtype=float32))
(1340, 0.0002909189, array([1.0197623], dtype=float32), array([-0.0449241], dtype=float32))
(1360, 0.00026421514, array([1.0188333], dtype=float32), array([-0.04281275], dtype=float32))
(1380, 0.0002399599, array([1.0179482], dtype=float32), array([-0.04080062], dtype=float32))
(1400, 0.00021793543, array([1.0171047], dtype=float32), array([-0.03888312], dtype=float32))
(1420, 0.00019793434, array([1.0163009], dtype=float32), array([-0.03705578], dtype=float32))
(1440, 0.00017976768, array([1.0155348], dtype=float32), array([-0.03531429], dtype=float32))
(1460, 0.00016326748, array([1.0148047], dtype=float32), array([-0.03365463], dtype=float32))
(1480, 0.00014828023, array([1.0141089], dtype=float32), array([-0.03207294], dtype=float32))
(1500, 0.00013467176, array([1.0134459], dtype=float32), array([-0.03056567], dtype=float32))
(1520, 0.00012231102, array([1.0128139], dtype=float32), array([-0.02912918], dtype=float32))
(1540, 0.0001110848, array([1.0122118], dtype=float32), array([-0.0277602], dtype=float32))
(1560, 0.000100889745, array([1.0116379], dtype=float32), array([-0.02645557], dtype=float32))
(1580, 9.162913e-05, array([1.011091], dtype=float32), array([-0.02521228], dtype=float32))
(1600, 8.322027e-05, array([1.0105698], dtype=float32), array([-0.02402747], dtype=float32))
(1620, 7.5580865e-05, array([1.0100728], dtype=float32), array([-0.02289824], dtype=float32))
(1640, 6.8643785e-05, array([1.0095996], dtype=float32), array([-0.02182201], dtype=float32))
(1660, 6.234206e-05, array([1.0091484], dtype=float32), array([-0.02079643], dtype=float32))
(1680, 5.662038e-05, array([1.0087185], dtype=float32), array([-0.01981908], dtype=float32))
(1700, 5.142322e-05, array([1.0083088], dtype=float32), array([-0.01888768], dtype=float32))
(1720, 4.6704197e-05, array([1.0079182], dtype=float32), array([-0.01800001], dtype=float32))
(1740, 4.2417145e-05, array([1.0075461], dtype=float32), array([-0.01715406], dtype=float32))
(1760, 3.852436e-05, array([1.0071915], dtype=float32), array([-0.01634789], dtype=float32))
(1780, 3.4988276e-05, array([1.0068535], dtype=float32), array([-0.01557961], dtype=float32))
(1800, 3.1776715e-05, array([1.0065314], dtype=float32), array([-0.01484741], dtype=float32))
(1820, 2.8859866e-05, array([1.0062244], dtype=float32), array([-0.0141496], dtype=float32))
(1840, 2.621177e-05, array([1.005932], dtype=float32), array([-0.01348464], dtype=float32))
(1860, 2.380544e-05, array([1.0056531], dtype=float32), array([-0.01285094], dtype=float32))
(1880, 2.1620841e-05, array([1.0053875], dtype=float32), array([-0.012247], dtype=float32))
(1900, 1.9636196e-05, array([1.0051342], dtype=float32), array([-0.01167146], dtype=float32))
(1920, 1.7834054e-05, array([1.004893], dtype=float32), array([-0.01112291], dtype=float32))
(1940, 1.6197106e-05, array([1.0046631], dtype=float32), array([-0.01060018], dtype=float32))
(1960, 1.4711059e-05, array([1.004444], dtype=float32), array([-0.01010205], dtype=float32))
(1980, 1.3360998e-05, array([1.0042351], dtype=float32), array([-0.00962736], dtype=float32))
(2000, 1.21343355e-05, array([1.0040361], dtype=float32), array([-0.00917497], dtype=float32))


  3. How to minimize cost (placeholder 이용) // 에러..

import tensorflow as tf
W = tf.Variable(tf.random_normal([1]), name='weight')
b = tf.Variable(tf.random_normal([1]), name='bias')
X= tf.placeholder(tf.float32, shape=[None])
Y= tf.placeholder(tf.float32, shape=[None])
 
# Our hypothesis XW+b
hypothesis = X * W + b
 
# cost/loss function
cost = tf.reduce_mean(tf.square(hypothesis - Y)
 
# Minimize
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01)
train = optimizer.minimize(cost)
 
# Launch the graph in a session.
sess = tf.Session()
# Initializes global variables in the graph.
sess.run(tf.global_variables_initializer())
 
# Fit the line with new training data
for step in range(2001):
  cost_val, W_val, b_val, _ = sess.run([cost, W, b, train], feed_dict={X: [1, 2, 3, 4, 5], Y: [2.1, 3.1, 4.1, 5.1, 6.1])
  if step % 20 == 0:
    print(step, cost_val, W_val, b_val)

(0, 1.2035878, array([1.0696986], dtype=float32), array([0.01276637], dtype=float32))
(20, 0.16904518, array([1.2650416], dtype=float32), array([0.13934135], dtype=float32))
(40, 0.14761032, array([1.2485868], dtype=float32), array([0.20250577], dtype=float32))
(60, 0.1289092, array([1.2323107], dtype=float32), array([0.26128453], dtype=float32))
(80, 0.112577364, array([1.2170966], dtype=float32), array([0.3162127], dtype=float32))
(100, 0.09831471, array([1.2028787], dtype=float32), array([0.36754355], dtype=float32))
(120, 0.08585897, array([1.189592], dtype=float32), array([0.41551268], dtype=float32))
(140, 0.07498121, array([1.1771754], dtype=float32), array([0.46034035], dtype=float32))
(160, 0.0654817, array([1.165572], dtype=float32), array([0.5022322], dtype=float32))
(180, 0.05718561, array([1.1547288], dtype=float32), array([0.54138047], dtype=float32))
(200, 0.049940635, array([1.1445953], dtype=float32), array([0.5779649], dtype=float32))
(220, 0.043613486, array([1.1351256], dtype=float32), array([0.6121535], dtype=float32))
(240, 0.038087945, array([1.1262761], dtype=float32), array([0.64410305], dtype=float32))
(260, 0.033262506, array([1.1180062], dtype=float32), array([0.6739601], dtype=float32))
(280, 0.029048424, array([1.1102779], dtype=float32), array([0.7018617], dtype=float32))
(300, 0.025368208, array([1.1030556], dtype=float32), array([0.7279361], dtype=float32))
(320, 0.022154227, array([1.0963064], dtype=float32), array([0.7523028], dtype=float32))
(340, 0.019347461, array([1.0899993], dtype=float32), array([0.7750737], dtype=float32))
(360, 0.016896311, array([1.0841053], dtype=float32), array([0.7963533], dtype=float32))
(380, 0.014755693, array([1.0785972], dtype=float32), array([0.8162392], dtype=float32))
(400, 0.012886246, array([1.0734499], dtype=float32), array([0.83482295], dtype=float32))
(420, 0.011253643, array([1.0686395], dtype=float32), array([0.85218966], dtype=float32))
(440, 0.009827888, array([1.0641443], dtype=float32), array([0.868419], dtype=float32))
(460, 0.008582776, array([1.0599433], dtype=float32), array([0.88358533], dtype=float32))
(480, 0.0074953884, array([1.0560175], dtype=float32), array([0.89775866], dtype=float32))
(500, 0.006545782, array([1.0523489], dtype=float32), array([0.9110037], dtype=float32))
(520, 0.005716468, array([1.0489205], dtype=float32), array([0.9233812], dtype=float32))
(540, 0.0049922303, array([1.0457168], dtype=float32), array([0.93494815], dtype=float32))
(560, 0.004359761, array([1.0427227], dtype=float32), array([0.94575745], dtype=float32))
(580, 0.0038074062, array([1.0399247], dtype=float32), array([0.95585895], dtype=float32))
(600, 0.0033250246, array([1.0373099], dtype=float32), array([0.96529907], dtype=float32))
(620, 0.0029037776, array([1.0348666], dtype=float32), array([0.9741207], dtype=float32))
(640, 0.0025359015, array([1.0325832], dtype=float32), array([0.9823645], dtype=float32))
(660, 0.002214623, array([1.0304493], dtype=float32), array([0.99006844], dtype=float32))
(680, 0.0019340345, array([1.028455], dtype=float32), array([0.99726814], dtype=float32))
(700, 0.00168901, array([1.0265915], dtype=float32), array([1.0039961], dtype=float32))
(720, 0.0014750187, array([1.02485], dtype=float32), array([1.0102835], dtype=float32))
(740, 0.0012881459, array([1.0232226], dtype=float32), array([1.0161589], dtype=float32))
(760, 0.0011249502, array([1.0217017], dtype=float32), array([1.0216497], dtype=float32))
(780, 0.0009824366, array([1.0202806], dtype=float32), array([1.026781], dtype=float32))
(800, 0.00085795636, array([1.0189523], dtype=float32), array([1.0315762], dtype=float32))
(820, 0.00074926845, array([1.017711], dtype=float32), array([1.0360574], dtype=float32))
(840, 0.0006543383, array([1.0165511], dtype=float32), array([1.0402449], dtype=float32))
(860, 0.00057143776, array([1.0154672], dtype=float32), array([1.0441583], dtype=float32))
(880, 0.00049904286, array([1.0144542], dtype=float32), array([1.0478154], dtype=float32))
(900, 0.0004358191, array([1.0135076], dtype=float32), array([1.0512332], dtype=float32))
(920, 0.00038059853, array([1.0126231], dtype=float32), array([1.0544269], dtype=float32))
(940, 0.00033238466, array([1.0117964], dtype=float32), array([1.0574113], dtype=float32))
(960, 0.0002902703, array([1.0110238], dtype=float32), array([1.0602009], dtype=float32))
(980, 0.00025349384, array([1.0103018], dtype=float32), array([1.0628073], dtype=float32))
(1000, 0.00022137808, array([1.009627], dtype=float32), array([1.0652432], dtype=float32))
(1020, 0.00019332914, array([1.0089965], dtype=float32), array([1.0675194], dtype=float32))
(1040, 0.00016882908, array([1.0084072], dtype=float32), array([1.0696473], dtype=float32))
(1060, 0.00014743926, array([1.0078566], dtype=float32), array([1.0716351], dtype=float32))
(1080, 0.00012875989, array([1.007342], dtype=float32), array([1.0734928], dtype=float32))
(1100, 0.00011244613, array([1.0068612], dtype=float32), array([1.0752288], dtype=float32))
(1120, 9.8200355e-05, array([1.0064118], dtype=float32), array([1.0768511], dtype=float32))
(1140, 8.5755724e-05, array([1.0059919], dtype=float32), array([1.0783674], dtype=float32))
(1160, 7.489431e-05, array([1.0055996], dtype=float32), array([1.0797837], dtype=float32))
(1180, 6.5406595e-05, array([1.0052328], dtype=float32), array([1.0811077], dtype=float32))
(1200, 5.7120622e-05, array([1.0048901], dtype=float32), array([1.0823449], dtype=float32))
(1220, 4.9882394e-05, array([1.0045699], dtype=float32), array([1.0835012], dtype=float32))
(1240, 4.3564207e-05, array([1.0042707], dtype=float32), array([1.0845816], dtype=float32))
(1260, 3.804614e-05, array([1.003991], dtype=float32), array([1.0855912], dtype=float32))
(1280, 3.3225275e-05, array([1.0037296], dtype=float32), array([1.0865349], dtype=float32))
(1300, 2.901571e-05, array([1.0034853], dtype=float32), array([1.0874166], dtype=float32))
(1320, 2.5340463e-05, array([1.003257], dtype=float32), array([1.0882409], dtype=float32))
(1340, 2.2129901e-05, array([1.0030438], dtype=float32), array([1.089011], dtype=float32))
(1360, 1.9328054e-05, array([1.0028446], dtype=float32), array([1.0897301], dtype=float32))
(1380, 1.6878726e-05, array([1.0026582], dtype=float32), array([1.0904027], dtype=float32))
(1400, 1.4740454e-05, array([1.0024842], dtype=float32), array([1.0910312], dtype=float32))
(1420, 1.2873619e-05, array([1.0023215], dtype=float32), array([1.0916185], dtype=float32))
(1440, 1.1241735e-05, array([1.0021695], dtype=float32), array([1.0921675], dtype=float32))
(1460, 9.818069e-06, array([1.0020274], dtype=float32), array([1.0926803], dtype=float32))
(1480, 8.574677e-06, array([1.0018947], dtype=float32), array([1.0931597], dtype=float32))
(1500, 7.4886166e-06, array([1.0017706], dtype=float32), array([1.0936075], dtype=float32))
(1520, 6.539272e-06, array([1.0016547], dtype=float32), array([1.0940262], dtype=float32))
(1540, 5.711003e-06, array([1.0015464], dtype=float32), array([1.0944173], dtype=float32))
(1560, 4.9874334e-06, array([1.001445], dtype=float32), array([1.094783], dtype=float32))
(1580, 4.3559958e-06, array([1.0013504], dtype=float32), array([1.0951246], dtype=float32))
(1600, 3.804345e-06, array([1.0012621], dtype=float32), array([1.0954438], dtype=float32))
(1620, 3.322312e-06, array([1.0011792], dtype=float32), array([1.0957422], dtype=float32))
(1640, 2.9007756e-06, array([1.0011021], dtype=float32), array([1.0960212], dtype=float32))
(1660, 2.5334934e-06, array([1.00103], dtype=float32), array([1.0962818], dtype=float32))
(1680, 2.2123513e-06, array([1.0009624], dtype=float32), array([1.0965253], dtype=float32))
(1700, 1.9319202e-06, array([1.0008993], dtype=float32), array([1.096753], dtype=float32))
(1720, 1.6872369e-06, array([1.0008405], dtype=float32), array([1.0969656], dtype=float32))
(1740, 1.4738443e-06, array([1.0007855], dtype=float32), array([1.0971642], dtype=float32))
(1760, 1.2871467e-06, array([1.0007341], dtype=float32), array([1.0973498], dtype=float32))
(1780, 1.12424e-06, array([1.0006859], dtype=float32), array([1.0975232], dtype=float32))
(1800, 9.815564e-07, array([1.0006411], dtype=float32), array([1.0976855], dtype=float32))
(1820, 8.573661e-07, array([1.0005993], dtype=float32), array([1.0978369], dtype=float32))
(1840, 7.4871434e-07, array([1.00056], dtype=float32), array([1.0979784], dtype=float32))
(1860, 6.5427787e-07, array([1.0005234], dtype=float32), array([1.0981107], dtype=float32))
(1880, 5.712507e-07, array([1.0004891], dtype=float32), array([1.0982342], dtype=float32))
(1900, 4.989224e-07, array([1.0004572], dtype=float32), array([1.0983498], dtype=float32))
(1920, 4.358085e-07, array([1.0004272], dtype=float32), array([1.0984578], dtype=float32))
(1940, 3.8070743e-07, array([1.0003992], dtype=float32), array([1.0985587], dtype=float32))
(1960, 3.3239553e-07, array([1.000373], dtype=float32), array([1.098653], dtype=float32))
(1980, 2.9042917e-07, array([1.0003488], dtype=float32), array([1.0987409], dtype=float32))
(2000, 2.5372992e-07, array([1.000326], dtype=float32), array([1.0988233], dtype=float32))

반응형
Posted by CCIBOMB
반응형

<2019. 11. 10.>

제주 - 김포 - 인천 - 로마 - 상파울루

과률루스 국제공항 - 봉헤찌로 - 쎄성당 - 총영사관 - 장미의집(CASA das ROSAS) - 파울리스타 거리 - 산토스해변

 

드디어 현지날짜로 11. 10. 일출과 함께 상파울루 도착..


상파울루 공항도 삼성 광고로 도배가 되어있었다.

 

상파울루에서는 출국심사 전 면세점 이용이 가능하였다.

 

상파울루 공항 버스 탑승장

 

상파울루에는 공항이 세 곳이 있다.

국제선은 대부분, 상파울루 시내와 가까운 '과률루스 국제공항'을 이용한다.

(도심과 약 25km 정도 거리)

과률루스 공항은 중남미의 허브공항이라 불리운다.

 

과률루스 국제공항 주차장

24시간 운영하며 7,500대 수용 가능하다.

http://www.aeroportoguarulhos.net/en/guarulhos-airport-parking-lot/official-parking

 

Official Parking Lot

Check the prices of the internal parking of Guarulhos International Airport / GRU.

www.aeroportoguarulhos.net

 

첫날 도착부터 날씨가 아쉬웠는데, 마지막날을 제외하고는 거의 흐렸다.

나는 파란 하늘이 많이 아쉬웠으나,

상파울루 영사님 말씀으로는 해가 뜨면 정말 따갑고 더워서 차라리 흐린 날이 나을 수도 있다고 하셨다.

 

공항으로 마중 나와주신 상파울루 영사관 강 행정원(89년, 남)님 덕분에 시내까지 편히 이동할 수 있었다.

 

 

우선 상파울루의 한인타운인 봉헤찌로 롯데마트에 들렀다.

 

봉헤찌로 롯데마트 주변

 

상파울루 중심에 위치하고 있는 '(se) 주교좌성당'

수용인원 8천명. 상파울루 성당 중에 가장 크고, 세계에서는 다섯 번째로 큰 신고딕 양식의 성당이라고..

상파울루의 몇 안되는 볼거리 중 하나-

 

상파울루의 거리 느낌이 신기했다.

유럽풍의 건물들도 일부 있고, 몇십년은 된듯한 오래된 건물들과 신축건물들이 다 함께 있었다.

어떤 나라를 떠올리기 힘든 독특한 분위기를 연출했다.

 

아직 호텔 체크인 시간이 되지 않아, 파울리스타 거리를 걸어보기로 했다.

호텔 바로 앞에는 주 상파울루 대한민국 총영사관이 있었다.

단독건물이 아니라, 파울리스타 거리에 있는 큰 빌딩 안에 8, 9층을 사용하고 있었다.

 

주 상파울루 대한민국 총영사관 민원실

 

위치 : Av. Paulista, 37 - Cj.81 - Bela Vista, São Paulo - SP, 01311-902 브라질

https://goo.gl/maps/GesFuq7EyWw2H9Rj7

 

Consulado Geral da República da Coreia em São Paulo

★★★★★ · 외국 영사관 · Av. Paulista, 37 - Cj.81

www.google.com

 

 

주 상파울루 대한민국 총영사관 앞은

유서깊은 문화의 공간이라고 하는 '장미의 집(CASA das ROSAS)'이 있다.

고건물로 보존가치가 있어 정부에서 매입하여 전시회 등을 개최하는 곳이다.

정원에는 이름답게 장미들이 피어있다.

(브라질 상파울루는 우리나라와 정확히 지구 반대편에 위치해있고 남반구인 탓에,

곧 본격적인 여름을 기다리는 중이다.)

 

장미의집과 총영사관 건물 사이에는 예쁜 카페도 있다.

반응형
Posted by CCIBOMB