본문 바로가기

tensorflow 27

PINN을 이용한 램버트 문제의 해 램버트 문제(https://pasus.tistory.com/316)를 풀기 위한 알고리즘은 여러가지가 제안되어 있지만 여기서는 물리 정보 신경망(PINN, physics-informed neural network)을 이용하여 이 문제를 풀어보고자 한다. 수치 데이터는 이전 게시글(https://pasus.tistory.com/297)에서 사용했던 것을 다시 사용한다. 먼저 램버트 문제의 운동 방정식은 다음과 같다. \[ \begin{align} \frac{d^2 \mathbf{r}}{dt^2 }+ \frac{\mu}{ \left( \sqrt{\mathbf{r} \cdot \mathbf{r}} \right)^3} \mathbf{r}=0 \tag{1} \end{align} \] 여기서 \(\mu\) 는 중력.. 2024. 4. 10.
[LSTM] LSTM-AE를 이용한 시퀀스 데이터 이상 탐지 오토인코더(AE, autoencoder)는 입력 데이터를 압축하고 의미 있는 표현으로 인코딩한 다음 복원시켜 복원된 데이터가 원본 데이터와 최대한 유사하도록 만든 신경망이다. AE는 일반적인 용도인 차원축소(dimension reduction) 뿐만 아니라 다양한 응용 분야를 갖고 있는데 그 중 하나가 이상 탐지(anomaly detection) 분야다. 비정상 탐지 또는 이상 탐지란 대부분의 입력 데이터와는 특성이 상이하여 정상이 아닌 것으로 의심을 불러일으킬 만한 어떤 사건 또는 측정값을 식별하는 행위이다. 예를 들면 국내에서 주로 사용되던 신용카드가 갑자기 해외에서 결제된 사건, 공장의 제조라인에서 불량품을 발견하는 일, 또는 센서 또는 시스템의 고장이라고 의심될 만한 측정 신호 검출 등을 들 수 .. 2023. 5. 31.
[LSTM] 주가 예측 LSTM(Long Short-Term Memory)이 시계열 예측(timeseries forecasting)에 특화되어 있다보니 주식 가격을 예측해보는 간단한 LSTM 예제 코드가 Github등에 많이 나와 있다. '주가예측'만큼 학습용 데이터를 손쉽게 얻을 수 있고 대중의 관심도 큰 분야는 없는 듯 하다. 최근 물리 시스템의 동역학 모델을 구축하는 데에 LSTM이 많이 도입되고 있고 개인적으로도 인공지능을 이용한 주식 거래 자동화에 관심이 있기 때문에 코딩 연습 겸 주가예측을 위한 간단한 LSTM 코드를 Tensorflow2로 구현해 보고자 한다. 참고로 특정 회사의 주가 데이터는 Yahoo finance 사이트의 Historical Data에 가면 다운로드 받을 수 있다. 예를 들어 특정 기간의 엔비.. 2023. 5. 19.
[VAE] beta-VAE 앞서 살펴본 바와 같이(https://pasus.tistory.com/263) VAE의 손실함수는 복원손실 항과 정규화 손실 항으로 구성된다. 식 (1)의 VAE 손실함수에서 첫번째 항인 복원손실은 복원(reconstruction)된 데이터가 원본 데이터와 얼마나 유사한지를 나타내는 오차다. 원본 데이터의 확률분포에 따라서 원본 데이터와 복원된 데이터 간의 교차 엔트로피나 L2 놈(norm)을 사용하여 복원손실을 계산할 수 있다. 두번째 항인 정규화(regularization) 손실은 고차원 입력 데이터를 저차원 잠재변수 공간(latent space)으로 인코딩할 때 잠재변수의 확률분포가 사전에(prior) 규정한 확률분포 \(p(\mathbf{z})\) 와 얼마나 유사한지를 계산하는 KL발산(Kullb.. 2023. 5. 11.
[U-Net] 망막 혈관 세그멘테이션 (Retinal Vessel Segmentation) U-Net을 망막 혈관 세그멘테이션(retinal blood vessel segmentation) 문제에 적용해 보자. 아래 사이트에 가면 데이터셋과 관련 논문, 그리고 텐서플로나 파이토치로 작성한 코드들이 많이 나온다. Papers with Code - Retinal Vessel Segmentation Retinal vessel segmentation is the task of segmenting vessels in retina imagery. ( Image credit: [LadderNet](https://github.com/juntang-zhuang/LadderNet) ) paperswithcode.com 사이트에는 4가지 데이터셋이 나와 있는데, 이중 DRIVE (Digital Retinal Im.. 2022. 5. 11.
[U-Net] U-Net 구조 이미지 세그멘테이션(image segmentation)은 이미지의 모든 픽셀이 어떤 카테고리(예를 들면 자동차, 사람, 도로 등)에 속하는지 분류하는 것을 말한다. 이미지 전체에 대해 단일 카테고리를 예측하는 이미지 분류(image classification)와는 달리, 이미지 세그멘테이션은 픽셀 단위의 분류를 수행하므로 일반적으로 더 어려운 문제로 인식되고 있다. 위 그림에서 semantic segmentation은 이미지 내에 있는 객체들을 의미 있는 단위로 분할해내는 것이고, instance segmentation 은 같은 카테고리에 속하는 서로 다른 객체까지 더 분할하여 semantic segmentation 범위를 확장한 것이다. 이미지 세그멘테이션은 의료 이미지 분석(종양 경계 추출 등), 자.. 2022. 5. 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.