[JAX] 학습한 모델 저장 및 로드
·
연구 Research/인공지능 Artificial Intelligent
기존에 자주 사용되면 파이토치나 텐서플로에서도 그렇듯이 학습한 모델을 저장하는 것은 필수이다. 나중에 다시 결과를 출력해야하거나 Transfer learning 등에 활용해야하기 때문이다. 이 글에서는 JAX 모델을 학습한 다음, 저장하고 다시 로드하는 방법에 대해서 다룬다. 1. 학습 후 저장 이 글에서는 model이라는 class 안에 optimizers를 정의하고 그 안에 있는 loss 등의 함수로 학습을 하고 있었다. class 안에 self.opt_init, \ self.opt_update, \ self.get_params = optimizers.adam(optimizers.exponential_decay(1e-3, decay_steps=1000, decay_rate=0.9)) self.opt_..
[LaTeX] LaTeX Error: Command \openbox already defined.
·
기타/논문작성 Writing
\usepackage{asmthm}를 쓰면 아래와 같은 에러가 뜰 수 있다. LaTeX Error: Command \openbox already defined. Or name \end... illegal, see p.192 of the manual. See the LaTeX manual or LaTeX Companion for explanation. Type H for immediate help. ... l.426 \vrule\hfil}} Your command was ignored. Type I to replace it with another command, or to continue without it. 이 에러는 \openbox라는 커맨드가 여러 패키지에 정의되어있어서 발생하는 오류이기 때문에 다음..
[JAX] 병렬컴퓨팅 예제 - jax.pmap으로 신경망 학습 예제
·
연구 Research/인공지능 Artificial Intelligent
JAX를 통해 병렬로 뉴럴 네트워크를 학습하는 예제를 고민하였다.JAX에서 제공해주는 예제도 있지만 이는 아주 심플한 선형 모델의 파라미터를 regression하는 문제이기 때문에 실제 뉴럴 네트워크 모델과는 괴리가 좀 있어서 직접 예제를 만들었다. JAX 0.3.1. 버전 1. JAX에서 제공하는 예제 import jaxjax.devices()>> [GpuDevice(id=0, process_index=0), GpuDevice(id=1, process_index=0), GpuDevice(id=2, process_index=0), GpuDevice(id=3, process_index=0)] 필자는 gpu 4개를 가지고 병렬 컴퓨팅을 사용했다. import numpy as npimport jax.numpy..
[matplotlib] x,y축 format 지정하는 방법
·
연구 Research/데이터과학 Data Science
matplotlib에서 log scale그래프를 그리다가 다음과 같이 y축 숫자표기가 너무 크다는 것을 발견하고 이를 수정하기 위한 코드를 작성하였다. 여러 방법을 찾아보긴 했는데 내가 느끼기에 가장 간단하고 범용성이 높은 방법은 다음과 같다. 1. axes 인스턴스 필요 대부분의 matplotlib 그림에서 고급 기능을 쓰기 위해서는 axes 인스턴스를 필요로 한다. 이 axes는 내가 그리고자 하는 figure에 할당된 class인데 그 내부에서 구체적으로 설정하는 매서드가 담겨있어서 이것에 접근해야한다. plt.plot(num_history, train_mse_history) plt.ylabel('MSE') plt.xlabel('epoch') plt.yscale('symlog') ax = plt.g..
[논문작성] physics와 siunitx package 활용하기
·
기타/논문작성 Writing
논문 작성할 때 편하게 수식을 쓰거나 숫자 및 단위를 쓰기 위해 매크로를 만들 수도 있지만 기존에 있는 package를 사용하는 것도 하나의 방법이다. 논문 양식에서 physics와 siunitx 패키지가 있었는데 이를 잘 활용하면 좋다 1. 미분/편미분 표기 \usepackage{physics} \dv{x}{t} = \dfrac{\mathrm{d}x}{\mathrm{d}t} \pdv{x}{t} = \dfrac{\partial{x}}{\partial{t}} 다음과 같이 $\mathrm{d}x$와 $\partial{x}$는 위와 같은 분수를 많이 쓸 때 계속 써주기 귀찮다는 문제가 있다. 따라서 dv와 pdv 명령어를 이용해서 편하게 작성할 수 있다. 2. 숫자에 단위 표기하기 글 안에서 숫자를 쓸 때 $..
[리눅스] 윈도우 환경에서 우분투 사용하는 방법
·
프로그래밍 Programming/리눅스 우분투 Ubuntu
개발이나 알고리즘 테스트 등의 목적으로 리눅스 환경에서 프로그래밍 및 시뮬레이션을 해야하는 경우가 있다. 실제 데스크탑에 우분투를 설치해서 사용하면 좋겠지만 기본적으로 윈도우나 맥OS를 쓰고 있을 것이다. 여기서는 윈도우11을 기준으로 설명한다. 또한 멀티 부팅의 경우에는 시도할 생각을 못해서 제외한다. 1. 가상환경에서 설치 컴퓨터 가상화 프로그램인 VMware에서 우분투를 설치할 수 있다. 다른 가상환경을 만들 수 있는 소프트웨어면 괜찮을 것으로 생각된다. 1) VMware 설치 2) VMware에서 Ubuntu.iso 파일을 이용해 우분투 설치 그러나 이런 VMware를 사용할 때는 충분한 하드디스크,메모리가 필요하고 컴퓨터의 연산속도가 좋아야 버벅임없이 사용할 수 있다. 나의 경우에는 노트북에 설..
[Overleaf] 고치던 파일이 컴파일되기 전에 날아갈 때
·
기타/논문작성 Writing
overleaf는 저장버튼이 따로 없이 컴파일을 하면 저장이 되고 ctrl+s를 누르면 컴파일이 된다. 그래서 컴파일에 문제가 있을 때 새로고침했더니 예전 버전으로 돌아가는 끔찍한(..) 일이 생길 수 있다. 저장 기준이 ctrl+s를 누르는 순간 or 컴파일을 새로 할 때인 것으로 추정되는데 다음과 같이 history가 있어서 이전에 수정한 부분을 찾아서 고칠 수 있다. 컴파일 오류가 생겨서 건들다가 쓰던 게 날아가서 마음이 아팠는데 여기에 저장된 히스토리 덕분에 되찾았다.
[논문작성] 논문 리뷰에 대한 응답
·
기타/논문작성 Writing
논문 리뷰에 대한 응답을 어떻게 해야할 지에 대한 기록. 1. 제출 형식 Author covering letter : 논문 처음 제출할 때와 비슷한 커버 레터 Response letter : 논문 리뷰에 대한 답변 Revised paper : 수정된 논문. 수정된 부분을 표시해줘야 한다. 2. 논문 리뷰에 대한 답변 준비 세 가지 경우가 있다. 1) 논문 리뷰를 검토 후 수용하는 경우 리뷰 내용을 보고 논문에 반영한 경우에는 반영한 페이지를 작성해준다. 2) 검토 후에 반영하지 않는 경우 논문 리뷰대로 검토했으나 논문에 반영하지 않기로 결정했으면, 이에 대한 이유를 적는다. 그리고 논문에 꼭 들어갔으면 한다면 반영해주기로 한다. 3) 리뷰에 대해 반박하는 경우 (논문 반영 X) 리뷰에 대해 반박하는 경우..
[인공지능] 딥러닝, 머신러닝에서 uncertainty/error 개념
·
연구 Research/인공지능 Artificial Intelligent
머신러닝, 딥러닝을 공부하다보면 다양한 에러에 대해서 배우게 된다.이 글에서는 이러한 용어들의 혼동을 막고자 종합적으로 정리하는 글이다. 1. Model bias, Estimation bias, Estimation variance  그 중에 하나가 model bias, estimation bias, estimation variance이다.    위 그림을 보면 이 개념을 설명하는 결과라고 볼 수 있다. Model bias는 실제 값과 내가 모델로 만든 값 중에서 가장 실제값을 가깝게 반영하는 모델에서 발생하는 바이어스이다. 즉, 내가 정한 모델은 아무리 최적화를 시켜도 truth 값과 완벽하게 일치하지 않을 수 있다. 예를 들어 비선형 모델인데 내가 아무리 선형 모델로 fitting을 하려고 해도 모델 ..
[git blog] jekyll 테마 적용하면서 발생한 에러들
·
프로그래밍 Programming
이번에 블로그를 git으로 만들어볼까하고 테마 적용을 시도했다가 수많은 에러를 직면한 것을 기록하고자 한다. 1. 버전 호환성 문제 처음에 Ruby를 설치할 당시에 잘 모르고 가장 최신 버전인 3.2.2를 설치했는데 나중에 이런저런 것들을 설치하다가 버전이 호환 안된다는 것을 깨달았다. 오류를 자세히 보면 Ruby < 3.2 이런 식으로 버전이 문제라고 알려준다. 그리고 구글 검색하다가 Ruby 3.0 이상부터는 무슨 문제가 발생할 수도 있다는 말을 봤다. 안전하게 설치하려면 2.7 정도의 버전이 좋은 것 같다. 2. 파일 경로 한글 포함 문제 내가 지정해놓은 github 로컬 저장소에는 한글이 포함되어있는데 이 때문에 아래와 같은 오류가 났다. Encoding::CompatibilityError: in..