Mac 및 Linux 환경에 Numo:::NArray 및 Numo:Linalg 설치
입문
Numo:::NArray는 Ruby 벡터 매트릭스 연산의 라이브러리로 Python의 Numpy에 해당합니다.Numo::Linalg는 선형 대수에 사용되는 라이브러리입니다. 예를 들어 특징 값 분해,numpy입니다.linalg와scipy.linalg에 해당한다.
Mac은 macOS Mojave10.14.4, Linux는 Ubuntu18.04.2를 사용했습니다.루비가 rbenv 등에 설치되었습니다.
OpenBLAS 설치
Mac
Homebrew에서 쉽게 설치할 수 있습니다.--"with-openmp"옵션은 OpenMP를 통한 병행화에 도움이 됩니다.
$ brew install openblas --with-openmp
Linux (Ubuntu)
apt-get에 설치할 수 있지만, 원본 구축에서 가장 적합한 환경을 얻을 수 있습니다.make 시 USE_OpenMP를 열면 OpenMP의 병렬화에 도움이 됩니다.생성할 때 PREIX에 일반적으로 라이브러리나 헤더 파일이 배치되는/usr/local 디렉토리를 지정합니다.
$ sudo apt-get install gcc gfortran
$ wget https://github.com/xianyi/OpenBLAS/archive/v0.3.5.tar.gz
$ tar xzf v0.3.5.tar.gz
$ cd OpenBLAS-0.3.5
$ make USE_OPENMP=1
...
$ sudo make PREFIX=/usr/local install
...
설치 Numo::NArray 및 Numo::Linalg
gem 명령으로 설치할 수 있습니다.Numo::Linalg는 Numo::NArray에 의존하므로 Numo::Linalg,Numo::NArray를 설치하면 함께 설치됩니다.
$ gem install numo-linalg
동작 확인
irb를 사용하여 동작을 확인합니다.Numo::Linalg, Numo::NArray를 가져오면간단한 행렬적 가져오기 (Numo:Linalg를 통해 Blas의 행렬적 함수를 사용하여 Numo::NArray의 행렬적 대신 계산) 과 QR 분해 (Lapack의 함수 중 하나) 를 사용할 수 있습니다.
irb(main):001:0> require 'numo/linalg/autoloader'
=> true
irb(main):002:0> x = Numo::DFloat.new(2, 4).rand
=> Numo::DFloat#shape=[2,4]
[[0.0617545, 0.373067, 0.794815, 0.201042],
[0.116041, 0.344032, 0.539948, 0.737815]]
irb(main):003:0> x.dot(x.transpose)
=> Numo::DFloat#shape=[2,2]
[[0.815142, 0.713004],
[0.713004, 0.967739]]
Numo::Linalg를 로드하고 행렬 곱셈을 실행했습니다.그리고 실행QR 분해.QR 분해는 행렬을 정교 행렬 Q와 상삼각 행렬 R로 분해한다.Q와 R의 행렬은 원래의 행렬로 쌓인다.irb(main):004:0> q, r = Numo::Linalg.qr(x)
=> [Numo::DFloat#shape=[2,2]
[[-0.469794, -0.882776],
[-0.882776, 0.469794]],
Numo::DFloat#shape=[2,4]
[[-0.13145, -0.478968, -0.850053, -0.745774],
[0, -0.16771, -0.447979, 0.169146]]]
irb(main):005:0> q.dot(r)
=> Numo::DFloat#shape=[2,4]
[[0.0617545, 0.373067, 0.794815, 0.201042],
[0.116041, 0.344032, 0.539948, 0.737815]]
Windows 환경에서?
Windows 10 Fall Creators Update를 시작으로 Windows Subsystem for Linux(WSL)는 Windows에서 Linux 환경을 사용할 수 있습니다.Ubuntu도 설치할 수 있습니다.WSL에서 준비한 Ubuntu에서 상기와 같은 방법으로 Numo:::NArray와 Numo:Linalg를 사용할 수 있음을 확인했습니다.
WSL의 설치는 다음과 같은 보도를 이해하기 쉽다.
끝내다
Numo:::NArray 및 Numo::Linalg는 루비가 NumpyScipy에 해당하는 행렬 연산을 할 수 있도록 합니다.Numo::NArray와numpy 방법의 대응은 아래 공식 문서를 참고할 수 있습니다.
Reference
이 문제에 관하여(Mac 및 Linux 환경에 Numo:::NArray 및 Numo:Linalg 설치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yoshoku/items/7333a08c269ed917283d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)