728x90

26 

아침에 5시에 일어나서 한국쪽 일을 하다가 730분에 아침을 먹었다리조트 조식은 아니고 대강대강 그냥 조식으로먹는 소시지계란 등이 있었다나중에 보니 로버트는 만들어주는 오믈릿을 받아 먹었다치즈와 할라피뇨가 들어가맛있어 보였다. 10일동안 먹어야하니 내일은 그게 어떤 맛인지 먹어봐야겠다.

9시에 시작해서 간단한 인사  일정이 시작되었다로버트는 사진에서 보이는 이미지보다 작고 완전 그냥 아저씩 같았는데 스캇은 사진의 이미지 그대로였다빅터는 깡마른 노인네로 생각했는데 키가 엄청 크고 덩치도  커서 호빗의 입장에서 간달프를 보는  같았다.

교육을 들으면 되는건  알았는데 교육은 내년이고 10일간 그동안 했던 일을 정리하고 토론하는 자리였다몆가지 나의아이디어를 공유하고갑작스런 요청으로 예전에 만든 ppt 띄워 설명도 해줬다그런데 이걸 10일간 한다고 생각하니암담하다.

 

점심은 1년에 한번 있는 BBQ 날이라고  직원이 같이 점심을 먹었다일부 직원이 만들어온 메뉴를 뷔페처럼 먹는 방식이었다. 일종의 축제로 여기는 것인지 아니면 다들 캘리포니아 출신이라도 되는지 다들 밝고 말이 많았다. 모르는 사람들과 계속 이야기해야 하는 상황이 불편해 나중에는 계속 하늘의 구름을 관찰하고 있었다.

저녁은 스캇의 매니저가 같이 먹자고 해서 고급 일식집에 갔다스시가 나오려나 기대를 했는데 메뉴를 알아보기 어려웠다다들 미국 문화에 익숙한데 나만 외지인이고  몰라 힘들었다결국 나오는 음식들을 보니 그냥 각종 생선구이집이었다어디를 봐도 일본식은 없었는데  그렇게 생각하는지 신기했다.

 

하루종일 집중이 되지않아 커피를 많이 마셨더니 화장실은  왜이리 많이 가야하는지.

10시가 되어 방에 돌아왔는데 피곤해서 아무것도 하고싶지가 않았다.

 

 

728x90
728x90

1. download the clone.bundle 

https://gerrit.googlesource.com/git-repo/clone.bundle

 

2. repo file 수정(나는 ~/bin/repo 에 두었다)

REPO_URL = os.environ.get('REPO_URL', None)
if not REPO_URL:
  #REPO_URL = 'https://gerrit.googlesource.com/git-repo'
  REPO_URL = '/home/bluelimn/work/clone.bundle'
REPO_REV = os.environ.get('REPO_REV')

이제 준비가 되었으면 repo init이나 sync 사용 가능

 

728x90
728x90

7 25 월요일

새벽3 10 알람이 울리면서 급히 잠에서 깨어났다어제 저녁부터 자려고 노력했으나 한 시간 간격으로 깨다 자다를 반복했다마지막 순간에는 제대로 잠이 들었는지 2시경에는 깨지 않았다.

 

자고 있을 줄 알았던 아내가 같이 일어나서 아침을 차려주었다너무 이른 아침이라 밥이 넘어가지 않아 율무차와 커피로 아침을 대신했다.

Covid 인해 공항리무진도 미리 예약하지 않으면 타기 어렵다는 이야기가 있어 미리 예약을 했다그래도 새변 4 54분에 타는 첫차라 자리가 많겠지 하고 2인석에 한자리 예약했다자리가 많이 남으면 널널하게 가고 싶은 마음에서였다.

 

혹시라도 시간이 늦을까 걱정했는데 버스는 제시간에 도착했다. 4 56분에 버스를 타고  정거장을 가니 예약하지 않고 타려는 사람이 나왔다자리가 없어 그 사람은 도중에 내려야 했다.

 

7시에 도착할 것이라는 예상과 달리 6시가 조금 넘은 시간에 공항에 도착했다아내에게  조그마한 가방이라도 살까했는데 다음 달에도 해외로 가야하고 비용도 부담이 되어 그야말로 아무것도 사지 않았다.

 

키오스크로 샐프 체크인을 하고 가방도 들고 탈 거라 기다리는 시간이 없었다같이 출발하기로  사람은 아슬아슬하게 도착 할 예정이라  Gate에서 보기로 했다장마기간 답지않게 날씨가 맑고 햇살이 좋았다

2시간  가까이 기다려야 하는데 회사에서 업무관련 메일이 와서 대기석에 자리를 깔고 일을 했다. 8 20 정도가 되자 안내방송으로  이름을 불러 Gate앞으로 오라고 했다급히 가보니 예방접종 확인서를 검사하고 서약서에 서명을 하라고 했다혼자 알아서 하니 직원이  과정을 확인하지 못해서 그런가보다.

 

비행기가 이륙을 위해 토잉카(견인차)에 끌려가고 방향을 잡고도 한참동안 기다렸다비행기가 다시 움직이기 시작하자 바로 상승으로 이어졌다자리가 복도석이라 창문을 보지 못해  그렇게 느꼈는지도 모른다.

기내에서 영화(유체이탈자) 한편 보고나니 좀이 쑤신다얼른 이자리를 벗어나고 싶다옆자리에는 노부부가 탔는데 남편은 계속 기침하고아내는 테이블위에 신발 벗은 발을 올려두고 캐릭터를 확실히 가져간다.

처음에 많이 거슬렸는데 나중에 남편이 아내 다리와 발을 주물러주는 모습을 보니 다리가 불편해서 그럴수도 있겠구나싶었다역시 편견을 없애는데에는 이해가 필요하다고 생각했다.

 아내라는 사람이 자기 물건을 내 자리 아래 떨어뜨리고 excuse me, excuse me 하면서 손가락으로 주워달라고 가리키고는 남편에게 ‘저사람 한국인 아닌  같아’ 라고 하기 전까지는.

 

고도가 올라가면 대한항공은 날개가 점점 검은색으로 변하는데 전체적으로 한꺼번에 변하는 것이 아니라 부분에서 시작해 번지는 형식이라  때마다 무슨 문제가 있는 것인지 걱정하게 된다아마 앞으로도 적응하기 어려울  같다.

12시간 비행은   시간이라 이어폰을 오래 끼고 있으니 귀가 아팠다.

고도가 급하고 높아지고 낮아질 때마다 아기와 강아지가 울어댄다강아지에게 해외여행은 무척이나 힘들고 무서울 같다

 

달라스에 내려 동료직원과 커피를 한잔 하고 다시 국내선으로 갈아탔다미국의 아이스 아메리카노는 상당히 진하고 맛있었으나 속이  쓰렸다.

미국인들만 있는 비행기에 쉴새없이 떠드는 승객 옆자리에 앉으니 어쩐지 위축이 되는 기분이 들었다동료 직원과는 체크인을 따로해서 계속 다른 자리에 앉아서 간다. 비행을 하면서 동료를 신경쓰지 않아도 되니 오히려 배려인 것인가.

한국에서 미국으로 가는 12시간도 충분히 힘들었지만 국내선 2시간반이  지루하게 느껴졌다.

미국인 입장에선 시외 고속버스 타는 개념이라 상당히 무질서할 줄 알았는데 한국이 빨리 나가기 위해 무질서하고 미국은 앞자리가  비면 그때 움직이는 것이 인상적이었다.

 

달라스와 디트로이트는 2시간 30분이면 가지만 시간이 다르다디트로이트가 한 시간 빨라 1 20분에 출발했지만 5시에 도착했다. 호텔 방은 힐튼 호텔이 그러하듯 쇼핑몰에 가게들이 모두 호텔 방으로 만들어져 있는  했지만 방은  넓었다.

 

Robert 만나 같이 피자를 먹고 근처 마트에서 물과 맥주를 사왔다 늦게까지 일을 하고 잤는데 아침 일찍 5시에 일어나지는 것을 보니 아직 시차 적응 중인가보다.

 

728x90
728x90

* 심층신경망

 - 2개 이상의 층을 포함한 신경망(다층 인공 신경망, 딥러닝)

* 렐루함수

 - 이미지 분류 모델의 은닉층에서 많이 사용하는 활성화 함수. 시그모이드 함수는 층이 많을수록 활성화 함수의 양쪽 끝에서 변화가 작기 때문에 학습이 어려워진다. 렐루함수는 이런 문제가 없으며 계산도 간단.

* 옵티마이저

 - 신망의 가중치와 절편을 학습하기 위한 알고리즘 또는 방법. 케라스에는 다양한 경사 하강법 알고리즘이 구현되어 있음. (SGD, 네스테로프 모멘텀, RMSprop, Adam)

 

package and method

* TensorFlow

 - add() : keras.layers 아래 있음. 호출하여 전달 한 순서대로 층이 차례대로 늘어남

 - summary() : 추가된 층의 종류/순서/parameter 개수를 출력. 층을 만들 때 name을 변수로 지정하면 구분이 쉽다

 - SGD : 기본 경사 하강법 옵티마이저 클래스

   : learning_rate : 학습률 지정 (default 0.01)

   : momentum : 0 이상의 값을 지정하면 모멘텀 최적화 수행

   : nesterov : True로 설정하면 네스테로프 모멘텀 최적화 수행

 - Adagrad

   : learning_rate : default 0.001

   : initial_accumulator_value : 그레이디언트 제곱을 누적하여 학습률을 나눔. 누적 추깃값을 지정할 수 있으며 default 0.1

 - RMSprop

   : learning_rate : default 0.001

   : rho : default 0.9 : Adagrad처럼 그레이디언트 제곱으로 학습률 나눔. 최근의 그레이디언트를 사용하기 위해 지수 감소를 사용

 - Adam

   : learning_rate : default 0.001

   : beta_1 : default 0.9 : 모멘텀 최적화에 있는 크레이디언트의 지수 감소 평균을 조절

   : beta_2 : default 0.999 : RMSprop에 있는 크레이디언트의 지수 감소 평균을 조절

 

심층 신경망

 

2개의 층

from tensorflow import keras

(train_input, train_target), (test_input, test_target) = keras.datasets.fashion_mnist.load_data()

from sklearn.model_selection import train_test_split

train_scaled = train_input / 255.0
train_scaled = train_scaled.reshape(-1, 28*28)

train_scaled, val_scaled, train_target, val_target = train_test_split(
    train_scaled, train_target, test_size=0.2, random_state=42)

dense1 = keras.layers.Dense(100, activation='sigmoid', input_shape=(784,))
dense2 = keras.layers.Dense(10, activation='softmax')

Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz 32768/29515 [=================================] - 0s 0us/step 40960/29515 [=========================================] - 0s 0us/step Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-images-idx3-ubyte.gz 26427392/26421880 [==============================] - 0s 0us/step 26435584/26421880 [==============================] - 0s 0us/step Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-labels-idx1-ubyte.gz 16384/5148 [===============================================================================================] - 0s 0us/step Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-images-idx3-ubyte.gz 4423680/4422102 [==============================] - 0s 0us/step 4431872/4422102 [==============================] - 0s 0us/step

 

픽셀값은 0~255 => 0~1로 변환

28*28의 2차원 배열을 784 크기의 1차원 배열로 변환

 

 

image array에서 784개의 특징이 10개로 줄어드는 과정에서 이번에는 은닉층이 추가되었다. 

출력층 활성화 함수

 - 이진 분류 : 시그모이드 함수를 많이 사용

 - 다중 분류 : 소프트맥스 함수 사용

은닉층 활성화 함수

 - 출력층보다 자유로움(시그모이드함수, 렐루 함수 등)

심층 신경망 만들기

model = keras.Sequential([dense1, dense2])
model.summary()

Model: "sequential_1" _________________________________________________________________

Layer (type) Output Shape Param # =================================================================

dense (Dense) (None, 100) 78500 dense_1 (Dense) (None, 10) 1010 =================================================================

Total params: 79,510 Trainable params: 79,510 Non-trainable params: 0 _________________________________________________________________

층을 추가하는 다른 방법

model = keras.Sequential([
    keras.layers.Dense(100, activation='sigmoid', input_shape=(784,), name='hidden'),
    keras.layers.Dense(10, activation='softmax', name='output')
], name='패션 MNIST 모델')

model.summary()

Model: "패션 MNIST 모델" _________________________________________________________________

Layer (type) Output Shape Param # =================================================================

hidden (Dense) (None, 100) 78500 output (Dense) (None, 10) 1010 =================================================================

Total params: 79,510 Trainable params: 79,510 Non-trainable params: 0 _________________________________________________________________

model = keras.Sequential()
model.add(keras.layers.Dense(100, activation='sigmoid', input_shape=(784,)))
model.add(keras.layers.Dense(10, activation='softmax'))

model.summary()

Model: "sequential_2" _________________________________________________________________

Layer (type) Output Shape Param # =================================================================

dense_2 (Dense) (None, 100) 78500 dense_3 (Dense) (None, 10) 1010 =================================================================

Total params: 79,510 Trainable params: 79,510 Non-trainable params: 0 _________________________________________________________________

model.compile(loss='sparse_categorical_crossentropy', metrics='accuracy')

model.fit(train_scaled, train_target, epochs=5)
Epoch 1/5
1500/1500 [==============================] - 5s 3ms/step - loss: 0.5681 - accuracy: 0.8076
Epoch 2/5
1500/1500 [==============================] - 4s 3ms/step - loss: 0.4077 - accuracy: 0.8526
Epoch 3/5
1500/1500 [==============================] - 4s 3ms/step - loss: 0.3726 - accuracy: 0.8658
Epoch 4/5
1500/1500 [==============================] - 4s 3ms/step - loss: 0.3504 - accuracy: 0.8728
Epoch 5/5
1500/1500 [==============================] - 4s 3ms/step - loss: 0.3341 - accuracy: 0.8788
에포크5번 동안 훈련을 진행했다.
추가된 층이 성능을 향상시키는 것을 볼 수 있다.

렐루 활성화 함수

model = keras.Sequential()
model.add(keras.layers.Flatten(input_shape=(28, 28)))
model.add(keras.layers.Dense(100, activation='relu'))
model.add(keras.layers.Dense(10, activation='softmax'))

model.summary()

Model: "sequential_3"

_________________________________________________________________

Layer (type)               Output  Shape                Param # =================================================================

flatten (Flatten)            (None, 784)                   0

dense_4 (Dense)          (None, 100)                   78500

dense_5 (Dense)          (None, 10)                    1010 =================================================================

Total params: 79,510

Trainable params: 79,510

Non-trainable params: 0

_________________________________________________________________

렐루함수는 0보다 작으면 0으로 만들고 양수면 그대로 출력

 

(train_input, train_target), (test_input, test_target) = keras.datasets.fashion_mnist.load_data()

train_scaled = train_input / 255.0

train_scaled, val_scaled, train_target, val_target = train_test_split(
    train_scaled, train_target, test_size=0.2, random_state=42)

model.compile(loss='sparse_categorical_crossentropy', metrics='accuracy')

model.fit(train_scaled, train_target, epochs=5)
Epoch 1/5
1500/1500 [==============================] - 4s 3ms/step - loss: 0.5310 - accuracy: 0.8126
Epoch 2/5
1500/1500 [==============================] - 4s 2ms/step - loss: 0.3963 - accuracy: 0.8570
Epoch 3/5
1500/1500 [==============================] - 4s 2ms/step - loss: 0.3581 - accuracy: 0.8714
Epoch 4/5
1500/1500 [==============================] - 4s 3ms/step - loss: 0.3353 - accuracy: 0.8801
Epoch 5/5
1500/1500 [==============================] - 4s 2ms/step - loss: 0.3207 - accuracy: 0.8856
model.evaluate(val_scaled, val_target)
375/375 [==============================] - 1s 2ms/step - loss: 0.3550 - accuracy: 0.8782
[0.3549554944038391, 0.878166675567627]

옵티마이저

케라스는 다양한 경사 하강법 알고리즘을 제공한다.(optimizer)

model.compile(optimizer='sgd', loss='sparse_categorical_crossentropy', metrics='accuracy')
sgd = keras.optimizers.SGD()
model.compile(optimizer=sgd, loss='sparse_categorical_crossentropy', metrics='accuracy')

sgd = keras.optimizers.SGD(learning_rate=0.1)

sgd = keras.optimizers.SGD(momentum=0.9, nesterov=True)

adagrad = keras.optimizers.Adagrad()
model.compile(optimizer=adagrad, loss='sparse_categorical_crossentropy', metrics='accuracy')

rmsprop = keras.optimizers.RMSprop()
model.compile(optimizer=rmsprop, loss='sparse_categorical_crossentropy', metrics='accuracy')

model = keras.Sequential()
model.add(keras.layers.Flatten(input_shape=(28, 28)))
model.add(keras.layers.Dense(100, activation='relu'))
model.add(keras.layers.Dense(10, activation='softmax'))
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics='accuracy')

model.fit(train_scaled, train_target, epochs=5)
Epoch 1/5
1500/1500 [==============================] - 4s 2ms/step - loss: 0.5223 - accuracy: 0.8193
Epoch 2/5
1500/1500 [==============================] - 3s 2ms/step - loss: 0.3921 - accuracy: 0.8601
Epoch 3/5
1500/1500 [==============================] - 3s 2ms/step - loss: 0.3499 - accuracy: 0.8733
Epoch 4/5
1500/1500 [==============================] - 4s 2ms/step - loss: 0.3241 - accuracy: 0.8809
Epoch 5/5
1500/1500 [==============================] - 3s 2ms/step - loss: 0.3033 - accuracy: 0.8883
model.evaluate(val_scaled, val_target)
375/375 [==============================] - 1s 1ms/step - loss: 0.3512 - accuracy: 0.8756
[0.351207435131073, 0.8755833506584167]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90

+ Recent posts