전체 글372 GradientTape로 간단한 CNN 학습하기 Sequential API와 Functional API 그리고 Model Subclassing API를 이용하여 CNN을 구현해 보았다. 이번에는 model.compile 로 모델을 컴파일하고 model.fit 로 학습하는 대신에 모델에 손실함수와 옵티마이저를 직접 엮어 넣고, tf.GradientTape 를 사용하여 CNN을 학습해 보도록 하겠다. 전과 똑같이 데이터셋은 Fashion_MNIST이고 CNN모델도 전과 똑같으며 Model Subclassing API로 구축한 것이다. model.compile 로 모델을 컴파일하는 부분은 다음과 같았다. model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accu.. 2021. 1. 11. Model Subclassing API로 간단한 CNN 구현해 보기 Sequential API와 Functional API에 이어서 이번에는 Model Subclassing API를 이용하여 CNN을 구현해 보자. Model Subclassing API는 자유도가 제일 높은 모델 구축 방법으로서 사용자 자신의 방법으로 신경망을 학습시킬 수도 있다. 딥러닝을 깊게 공부하려면 반드시 알아야 할 API다. MNIST 숫자 분류 대신에 Fashion_MNIST 데이터셋을 이용해 보기로 한다. MNIST는 손글씨였지만 Fashion_MNIST는 신발, 가방, 옷 등의 흑백 그림을 모아 놓은 데이터셋이다. 텐서플로2에서는 Fashion_MNIST 데이터셋도 쉽게 다운로드할 수 있다. fashion_mnist = tf.keras.datasets.fashion_mnist (x_trai.. 2021. 1. 11. Functional API로 간단한 CNN 구현해 보기 Functional API는 여러 개의 입력과 출력이 있는 모델을 포함하여 보다 유연한 모델을 구축할 때 사용하며 ResNet과 같이 순차적이지 않은 모델도 구축할 수 있다. 또한 Functional API에서는 모델 내부의 특정 레이어(layrer)에 접근하여 웨이트(weight)과 바이어스, 그리고 레이어의 입출력 텐서 등을 쉽게 추출할 수 있다. 만들고자 하는 CNN 모델은 Sequential API로 만든 것과 똑같다. Functional API에서는 첫번째 레이어가 tf.keras.layers.Input 이어야 한다. 맨 마지막에 tf.keras.Model 을 호출하여 모델의 입력 레이어와 출력 레이어를 인수로 넣어주면 모델이 완성된다. input_shape = (28,28,1) img_inpu.. 2021. 1. 11. 변분법 (calculus of variation) 최적화는 크게 정적 최적화(static optimization)와 동적 최적화(dynamic optimization)로 분류할 수 있다. 정적 최적화는 파라미터 최적화(parameter optimization)라고도 하며, 동적 최적화는 최적제어(optimal control) 문제라고 한다. 파라미터 최적화는 정적(static) 파라미터를 변수로 하는 어떤 함수(function)에서 최소값 또는 최대값을 산출하는 파라미터를 구하는 문제다. 반면에 동적 최적화는 '함수를 변수로 하는 함수' (함수의 함수로서 functional이라고 한다)에서 최소값 또는 최대값을 산출하는 함수를 구하는 문제다. 파라미터 최적화에 미분법이 필요하듯이 동적 최적화에는 변분법(calculus of variation)이 필요하다.. 2021. 1. 11. 기본 궤도 미분 방정식 전 우주에 물체가 딱 2개 밖에 없다고 가정한다. 이 2개의 물체도 질점(부피와 모양이 없이 질량만 가진 물체)이라고 가정한다. 질량이 있으므로 두 질점 사이에는 만유인력이 작용한다. 이런 조건에서 이 두 질점의 운동 방정식을 세워보려고 한다. 이와 같이 '만유인력 하에서의 두 질점의 운동에 관한 문제'를 이체문제(two-body problem)라고 한다. 그림과 같이 질량 \(M\)과 질량 \(m\)인 두 질점이 거리 \(r\)만큼 떨어져 있고, 두 질점 간에는 오직 만유인력만 작용한다고 가정한다. 그림에는 관성좌표계 \(\{i\}\)도 표시했다. 뉴턴의 제2법칙을 적용하려면 관성좌표계가 필요하기 때문이다. 그러면 만유인력의 법칙에 의하여 질점 \(M\)에는 질점 \(m\)방향으로 힘이 작용하므로 질점.. 2021. 1. 11. 이체문제 (Two-Body Problem) 천문역학의 기초는 17세기에 정립되었다. 이 시기에 가장 큰 공헌을 한 사람은 티코 브라헤 (Tycho Brahe, 1546-1601), 요하네스 케플러 (Johanness Kepler, 1571-1630), 그리고 아이작 뉴턴 (Isaac Newton, 1642-1727)이다. 덴마크 출신의 관측 천문학자인 브라헤는 수십년간 행성의 운동을 관측하고 그 위치를 기록하였는데 당시 망원경이 사용되기 전에 육안으로 관측할 수 있는 가장 정확한 관측기록을 남긴 것으로 평가받고 있다. 브라헤의 정밀하고 방대한 관측 자료를 인계받은 독일의 천문학자 케플러는 그의 자료를 분석하여 행성운동에 관한 3가지 법칙을 만들었다. 1609년에 행성의 운동에 관한 제1법칙인 타원궤도의 법칙과 제2법칙인 면적속도 일정의 법칙을 발.. 2021. 1. 11. 자이로스코프 효과 과학관에 가면 자이로스코프 효과(gyroscopic effect)가 무엇인지 몸으로 느끼게 해주는 장치가 있다. 바로 손잡이가 달려있는 자전거 바퀴와 회전의자다. 처음에는 관람객에게 자전거 바퀴를 양손에 쥐게 한 후 회전의자에 앉힌다. 그리고 회전의자를 돌린다. 그러면 아무런 일도 일어나지 않는다. 이번에는 자전거 바퀴를 손으로 잡아당겨 빠르게 회전시킨다. 그리고 관람객이 앉아 있는 회전의자를 돌린다. 그러면 이번에는 마치 유령이 자전거 바퀴를 비트는 듯한 느낌이 온다. 손으로 꽉 잡지 않으면 자전거 바퀴가 비틀어진다. 매우 신기한 일이다. 이것이 자이로스코프 효과라고 불리는 현상이다. 자이로스코프 효과는 회전하는 물체의 회전축에 모멘트를 가했을 때 모멘트의 회전 방향대로 회전축이 움직이지 않고 그 직각.. 2021. 1. 10. 만유인력의 법칙 뉴턴의 만유인력의 법칙(law of universal gravitation)은 질량을 가진 물체사이에 작용하는 인력(끌어당기는 힘)에 관한 것으로서 뉴턴은 이 법칙을 제2법칙과 결합하여 행성의 운동을 해석하고 케플러 법칙을 증명하였다. 만유인력의 법칙에 의하면 두 질점 간의 인력은 두 질점을 연결한 선과 평행하게 작용하며 크기는 두 질점의 질량의 곱에 비례하고 두 질점 사이의 거리의 제곱에 반비례한다. 이를 수식으로 표현하면 다음과 같다. \[ \begin{align} \vec{F}_1 &= G \frac{Mm}{r^2} \hat{e}_r \tag{1} \\ \\ &= G \frac{Mm}{r^2} \frac{\vec{r}}{r} \end{align} \] 여기서 \(M, m \)은 두 질점의 질량, \.. 2021. 1. 10. 최소화의 필요조건과 충분조건 다음과 같이 제약조건이 없는 일반적인 함수의 최적화 문제에서, \[ \min_\mathbf{x} f(\mathbf{x}) \] 함수 \(f(\mathbf{x})\)가 \( \mathbf{x}^\star\)에서 로컬(local) 최소값이 되기 위한 필요조건(necessary condition)은 \( \mathbf{x}=\mathbf{x}^\star\)에서 계산한 \(f\)의 그래디언트(gradient)가 \(0\)이 되는 것이다. \[ \nabla_\mathbf{x} f(\mathbf{x}^\star ) = 0 \] 위 조건을 \(\mathbf{x}^\star\)이 최소점이 되기 위한 1차(first order) 필요조건이라고 한다. 사실 위 조건은 로컬 최대점에서도 성립한다. 그럼 또 다른 필요조건이 .. 2021. 1. 10. [Continuous-Time] 선형 시스템 시스템은 여러가지 기준으로 다양하게 분류될 수 있는데, 우선 시스템을 선형 시스템과 비선형 시스템으로 분류할 수 있다. 선형 시스템(linear system)인지 판별하기 위해서 두 개의 초기값과 입력 및 출력 세트가 있다고 하자. 첫 번째 세트는 임의의 시간 \(t=t_0\)에서 상태변수의 초기값이 \(\mathbf{x}_1 (t_0)\)이고, 시간 영역 \(t \ge t_0\)에서 입력이 \(\mathbf{u}_1 (t)\)일 때 출력이 \(\mathbf{y}_1 (t)\)이고, 두 번째 세트는 상태변수의 초기값이 \(\mathbf{x}_2 (t_0)\)이고 시간 영역 \(t \ge t_0\)에서 입력이 \(\mathbf{u}_2 (t)\)일 때 출력이 \(\mathbf{y}_2 (t)\)이다. 선형.. 2021. 1. 10. 경로 좌표계와 극 좌표계 비슷해 보이지만 서로 다른 좌표계가 있다. 경로 좌표계(path coordinate)와 극 좌표계(polar coordinate)이다. 경로 좌표계는 물체가 이동하는 경로를 따라 각 지점에서 물체의 속도 방향(tangential component, \(\hat{e}_t \))과 경로의 곡률 중심(center of curvature) 방향(normal component, \(\hat{e}_n \))을 좌표축으로 삼는다. 그래서 Tangential-Normal 좌표계라고도 한다. 경로가 미리 정해져 있거나 혹은 가늠할 수 있는 경로를 따라 움직이는 물체의 운동을 표현할 때 편리한 좌표계다. 예를 들면 롤러코스터나 자동차 또는 인공위성 등의 운동이 이에 해당한다. 위 그림에서 \(\{a\}\)는 기준 좌표계고.. 2021. 1. 9. 시스템의 수학적 표현 방법 시스템은 어떤 입력에 대해서 반응하여 동작하는 장치나 구성품의 집합을 뜻한다. 시스템의 반응을 출력 또는 응답이라고 한다. 시스템은 꼭 물리적인 장치나 구성품 또는 하드웨어일 필요는 없고, 알고리즘 또는 소프트웨어일 수도 있다. 아니면 사회경제 제도일 수도 있다. 세상에는 무인기 시스템, 제어 시스템, 금융 시스템 등등 많은 시스템이 있다. 제어 대상 시스템을 수학적으로 표현하는 방법에는 두 가지가 있다. 입력과 출력의 관계식으로 표현하는 방법과 상태공간(state-space) 방정식으로 표현하는 방법이다. 입력과 출력의 관계식으로 표현하는 방법을 시스템의 외부적 표현 방법이라고도 하는데 다음과 같이 연산자(operator)를 이용하여 입출력 관계식을 함수로 나타낸다. \[ \mathbf{y}(t)= \.. 2021. 1. 9. 안티 와인드업 (Anti-Windup) 제어 대상 시스템에 대해서 우리가 바라는 동작이 무엇인지 수치로 정해준 것을 명령(command)이라고 하고, 이 값과 실제 시스템의 출력의 차이를 추종 오차(tracking error)라고 한다. 비례-적분(PI, proportional-integral) 제어기는 출력이 정정상태(steady-state)에 돌입했을 때의 추종 오차를 줄이기 위한 제어 기법이다. 아래 그림은 일반적인 제어 시스템의 구조를 보여준다. \(r\)을 명령, \(y\)를 출력, \(e=r-y\)를 추종 오차, \(u\)를 제어 신호라고 한다. PI 제어기는 추종 오차의 크기에 비례하는 값과 오차의 적분 (또는 오차의 누적)에 비례하는 값을 제어 신호로 내보낸다. \[ u(t)=K_p e(t)+K_I \int_0^t e(t) \ .. 2021. 1. 9. 추력 방정식 탄도 미사일이나 발사체의 추력(thrust)은 로켓 엔진이 연료를 빠르게 분사하면서 생기는 반작용에 의해서 생성된다. 다음 그림은 로켓과 로켓에서 분사된 연료로 구성된 질점(particle) 시스템을 보여주고 있다. 추력 유도 과정을 간단하게 하기 위해서 로켓에는 대기 압력 이외에 다른 힘이 존재하지 않고 분사된 연료의 방향은 로켓 동체의 센터라인과 일치한다고 가정한다. 그림에서 \(\hat{e}_{ct}\)는 로켓 동체의 센터라인을 나타내는 방향 벡터다. 위에 있는 그림은 시간 \(t\)에서 질량 \(m\)인 로켓이 절대 속도 \(V\)로 \(\hat{e}_{ct}\) 방향으로 날아가는 것을 나타내고, 아래 그림은 짧은 시간 \(\Delta t\) 동안에 로켓의 연소과정을 거쳐 적은 질량 \(\Delt.. 2021. 1. 9. 이전 1 ··· 20 21 22 23 24 25 26 27 다음