[JAX] vmap과 jit의 속도
·
연구 Research/인공지능 Artificial Intelligent
JAX를 쓰다보니 분명 vmap을 사용했음에도 안에 있는 루프는 빨리 되지만 정작 vmap을 나올 때 느려지는 현상을 발견하였다. 구체적으로 알아보려면 jax.make_jaxpr 또는 jax.block_until_ready를 써보라고 하는데 make_jaxpr 같은 경우에는 컴파일할 때 각 변수 flow를 보여주는 역할을 해서 도움이 될 수도 있다. vmap과 jit의 시간 차이를 알아보려면 아래의 예제를 사용해볼 수 있다. from functools import partial from timeit import timeit from jax import vmap, jit, random, numpy as jnp n, d = 512, 64 a = random.normal(random.PRNGKey(0), (n..
[matplotlib] 그래프 색상/마커 다르게 그리기
·
프로그래밍 Programming/파이썬 Python
그래프를 여러개 그리는데 색깔이 설정에서 계속 동일하게 반복된다. (아래 그림 참고) 나의 경우에는 색상을 classic으로 설정해서 클래식 색상의 7가지가 반복되게 되어있다. 이게 마음에 안 들어서 살펴보다가 최신 matplotlib 버전부터는 axes.set_prop_cycle을 이용하면 색상도 편하게 다르게 할 수 있고 마커도 일정 패턴을 반복하도록 할 수 있음을 알게 되었다. 아래는 그 예시 코드로 Spectral cmap에서 내가 원하는 그래프 개수만큼을 간격을 추출해서 그래프를 그리기 전에 미리 cycler를 정의해놓으면 편하게 색상을 지정할 수 있다. import matplotlib.pyplot as plt ax = plt.subplot(111) num_lines = 30 colors = [..
[수치해석] 미분방정식을 시간이 작아지는 방향으로(역으로) 풀 때
·
수치해석 Numerical Analysis
이런저런 생각을 하다가 미분방정식의 최종 시간에서의 값이 정해질 때 역으로 풀면 (즉, 시간을 거꾸로 해서 풀면) 풀릴 지에 대한 궁금증이 생겨서 테스트한 것이다. % Solve differential equation using MATLAB odesolver tspan = [0 5]; y0 = 10; [t,y] = ode45(@(t,y) -2*y, tspan, y0); figure; plot(t,y,'-o'); dt = 0.01 ; N = tspan(2) / dt ; x = zeros(N+1,1) ; f = @(t,y) -2*y ; x(1) = y(end) ; % solve reversely for i =1:N t_tmp = 5 - dt * i ; x(i+1) = x(i) - dt * f(t_tmp,x(..
[LaTeX] LaTeX 안에 코드 블록 넣기
·
기타/논문작성 Writing
*주의 : 이 글은 overleaf를 기준으로 작성되었음 다음과 같이 style을 custom해서 설정한다. \usepackage{listings} \definecolor{backcolour}{rgb}{0.95,0.95,0.92} \definecolor{codegreen}{rgb}{0,0.6,0} \definecolor{myred1}{rgb}{255, 0, 0} % Define a custom style \lstdefinestyle{myStyle}{ backgroundcolor=\color{backcolour}, commentstyle=\color{codegreen}, basicstyle=\ttfamily\footnotesize, breakatwhitespace=false, breaklines=true,..
[논문작성] Word에 수식번호 추가하기
·
기타/논문작성 Writing
논문을 작성하다보면 어쩔 수 없이 word에 논문을 써야할 때가 있는데 이 때 수식을 추가하는 방법에 대해 고민했었다. 수식을 삽입하는 방법은 2가지가 있다.옵션 1) 이미지로 삽입하기 (MathType이나 LaTeX 수식을 이미지로 변환 후 사용하는 경우) 옵션 2) word 자체 수식을 사용하기 각 옵션마다 가능한 방법이 있다. 옵션 1의 경우방법1. 수식을 이미지화 후 텍스트 줄 안으로 넣고 문장 끝에 번호 추가수식을 이미지화(jpg, png 등)한 후에 그림 옵션을 '텍스트 줄 안'으로 선정하고 이미지를 삽입한다. 그리고 탭을 눌러서 맨 끝에 (1)등의 변호를 추가한다.이 경우는 수식을 이미지화했다는 전제가 있는데, mathtype 같은 다른 프로그램을 통해 수식을 이미지로 가지고 있는 경우에 편..
[서버] 유무선으로 연결된 서버컴퓨터(Ubuntu)에 원격접속하기
·
프로그래밍 Programming/리눅스 우분투 Ubuntu
(컴퓨터 지식이 부족한 사람의 서버 연결법에 대한 설명이므로 자세한 내용은 전문가 분을 참고하세요 / 참고한 글은 아래에 링크로 달아놓았습니다.) 연결 세팅은 다음과 같다. 1. 고정아이피로 할당된 공유기(IPTIME)가 존재한다. 2. 공유기에서 유선으로 연결된 나의 컴퓨터가 있다. 이 컴퓨터가 원격으로 접속할 클라이언트다. 3. 동일한 공유기에서 유선으로 연결된 서버 컴퓨터가 있다. 여기서 강조할 부분은 '같은 공유기를 쓴다'는 점이다. 만약 클라이언트와 서버 둘 다 각자의 랜선으로 연결되어 각자의 아이피를 가지고 있다면 컴퓨터의 주소인 아이피가 명확하기 때문에 중간에 있는 몇 가지 단계들을 그냥 넘어갈 수 있다. 하지만 현실적인 문제로 공유기를 통해 두 개를 연결한 경우이다. 이 경우, 공유기에 유..
[수학] Norm of vector
·
수학 Mathematics
1. Vector의 norm의 정의 vector space $X$에서 정의된 scalar function 'norm'은 특정한 properties를 만족한다. 즉, 다음의 property를 만족하면 norm이라고 할 수 있다. $x \in \mathbb{R}^{n}$ 와 같은 $n$차원 벡터가 있을 때 1) positivity & positive definiteness $\|x\| \geq 0$ $\|x\|=0 \text{ iff } x=0$ 2) absolute homogeneity $\|\alpha x\|=| \alpha | \|x\|$ 3) triangle inequality $\|x+y\| \leq \|x\| + \|y\|$ 여기서 드는 생각은 왜 norm이라는 것이 중요한가라는 질문이다. 직관적..
[데이터과학] scipy interpolation 종류 정리
·
연구 Research/데이터과학 Data Science
모든 scipy interpolation을 다 시도해보았다. 각 interpolation마다 특징이 있으므로 원하는 것을 사용하면 된다. from scipy import interpolate import numpy as np x = np.arange(0, 10) y = np.sin(-x) kind_set = [ "zero", "linear", "quadratic","nearest", "nearest-up", "slinear", "cubic", "previous"] xnew = np.arange(0, 9, 0.1) for i in range(4): f = interpolate.interp1d(x, y, kind=kind_set[i]) ynew = f(xnew) plt.plot(xnew, ynew, labe..
[인공지능] 인공지능 라이브러리 정리
·
연구 Research/인공지능 Artificial Intelligent
MATLAB을 제외하고 인공지능 툴을 쓸 수 있는 환경은 대부분 파이썬이다. 그런데 파이썬만 있다고 끝나는 것이 아니라 인공지능 라이브러리를 동반해야 한다. 나는 Tensorflow2, Keras, PyTorch, JAX 까지 다 써보고 현재는 Julia도 고려하는 중이다. (Tensorflow1은 써봤는데 불편하기도 하고 그 때는 2가 막 활발해지던 시점이라서 그냥 넘겼다.) 철저히 개인적인 경험을 바탕으로 작성하는 것이라서 연구 쪽에 초점이 맞춰져있고, 그걸 감안하고 보면 될 것이다. 혹시 실무를 하시는 분들이 있으면 본인의 경험을 공유해주시면 정말 좋을 것 같다. 아래가 내용을 정리한 표 Tensorflow Keras PyTorch JAX Julia 특징 Google에서 시작 프랑소와 숄레가 창시한..
[Python] MCMC Sampling library
·
프로그래밍 Programming/파이썬 Python
MCMC sampling을 위한 라이브러리 marathon : c++ 라이브러리 c++ 라이브러리는 고려하지 않았으므로 패스 Pyro : Pyro is a universal probabilistic programming language (PPL) written in Python and supported by PyTorch on the backend. Pyro enables flexible and expressive deep probabilistic modeling, unifying the best of modern deep learning and Bayesian modeling. It was designed with these key principles Universal: Pyro can represen..