줄리아, 매트랩, 파이썬, R에서 동등한 코드들
📂프로그래밍
줄리아, 매트랩, 파이썬, R에서 동등한 코드들
Cheat Sheet : Equivalent Codes in Julia, Matlab, Python, R
일반Common
파이썬에 대해서 다음과 같은 환경이라고 하자.
import numpy as np
주석 comment
|
줄리아Julia |
#comment |
파이썬Python |
R |
매트랩Matlab |
%comment |
2차원 그리드 2D grid
|
파이썬Python |
np.meshgrid(x,y) |
매트랩Matlab |
[X,Y] = meshgrid(x,y) |
플래튼 Flatten
|
줄리아Julia |
y = vec(x) |
파이썬Python |
y = np.ravel(x) |
매트랩Matlab |
y = x(:) |
영행렬 Zero array
|
줄리아Julia |
y = zeros(4,2) |
매트랩Matlab |
파이썬Python |
y = np.zeros([4,2]) |
R |
y = matrix(0,4,2) |
줄리아에 대해서 다음과 같은 환경이라고 하자.
using FFTW
푸리에 변환 Fourier transform
|
줄리아Julia |
y = fft(x) |
R |
매트랩Matlab |
파이썬Python |
y = np.fft.fft(x) |
푸리에 역변환 Inverse Fourier transform
|
줄리아Julia |
y = ifft(x) |
매트랩Matlab |
파이썬Python |
y = np.fft.ifft(x) |
R |
x = fft(y,inverse=TRUE)/length(y) |
보간법Interpolation
파이썬에 대해서 다음과 같은 환경이라고 하자.
from scipy.interpolate import griddata
$X, Y, P, Z$를 2차원 배열, $x, y$를 1차월 배열이라고 하자.
2차원 보간 2D interpolation
|
파이썬Python |
Z = griddata( (np.ravel(X), np.ravel(Y)), np.ravel(P), (x, y) ) |
매트랩Matlab |
Z = interp2(X, Y, P, x, y) |
시각화Visualization
줄리아에 대해서 다음과 같은 환경이라고 하자.
using Plots
파이썬에 대해서 다음과 같은 환경이라고 하자.
import matplotlib.pyplot as plt
2차원 이미지로 출력하고자 하는 배열을 A
라고 하자.
스케일 범위 지정 Set scale range
|
줄리아Julia |
heatmap(A, clim = (a,b)) |
파이썬Python |
plt.imshow(A)plt.colorbar()plt.clim(a,b) |
수평선 Horizon line
|
줄리아Julia |
hline!(a) |
파이썬Python |
plt.axhline(a) |
수직선 Vertical line
|
줄리아Julia |
vline!(a) |
파이썬Python |
plt.axvline(a) |
-->
머신러닝Machine Learning
플럭스에 대해서 다음과 같은 환경이라고 하자.
using Flux
파이토치에 대해서 다음과 같은 환경이라고 하자.
import torch
import torch.nn as nn
import torch.nn.functional as F
텐서플로우에 대해서 다음과 같은 환경이라고 하자.
import tensorflow as tf
from tensorflow import keras
배열/텐서 Array/Tensor
|
플럭스Flux |
A = [1 2 3] |
파이토치PyTorch |
A = torch.tensor([1, 2, 3]) |
텐서플로우TensorFlow |
A = tf.constant([1, 1, 1]) |
덴스 레이어 Dense layer
|
플럭스Flux |
Dense(in, out, bias=true, relu) |
파이토치PyTorch |
torch.nn.Linear(in, out, bias=True) |
텐서플로우TensorFlow |
keras.layers.Dense(out, activation="relu") |
시퀀셜 모델 Sequential model
|
플럭스Flux |
model = Chain(
Dense(5, 10, relu),
Dense(10, 10, relu),
Dense(10, 2, relu)
) |
파이토치PyTorch |
model = nn.Sequential(
nn.Linear(5, 10),
nn.Relu(),
nn.Linear(10, 10),
nn.Relu(),
nn.Linear(10, 2),
nn.Relu()
) |
텐서플로우TensorFlow |
model = keras.models.Sequential([
keras.layers.Flatten(input_shape=[5]),
keras.layers.Dense(10, activation="relu"),
keras.layers.Dense(10, activation="relu"),
keras.layers.Dense(2, activation="relu"),
]) |
모델 요약 Model summary
|
플럭스Flux |
julia> model
Chain(
Dense(5, 10, relu), # 60 parameters
Dense(10, 10, relu), # 110 parameters
Dense(10, 2, relu), # 22 parameters
) # Total: 6 arrays, 192 parameters, 1.125 KiB.
|
파이토치PyTorch |
>>>model
Sequential(
(0): Linear(in_features=5, out_features=10, bias=True)
(1): ReLU()
(2): Linear(in_features=10, out_features=10, bias=True)
(3): ReLU()
(4): Linear(in_features=10, out_features=2, bias=True)
(5): ReLU()
) |
텐서플로우TensorFlow |
>>>model.build()
>>>model.summary()
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
flatten (Flatten) (None, 5) 0
dense_4 (Dense) (None, 10) 60
dense_5 (Dense) (None, 10) 110
dense_6 (Dense) (None, 2) 22
=================================================================
Total params: 192
Trainable params: 192
Non-trainable params: 0
_________________________________________________________________
|