Python vs Ruby'제0부터 Deep Learning 만들기'1장sin 함수와cos 함수의 도표

개요


책 <0부터 Deep Learning-Python에서 배운 딥러닝의 이론과 실현> 제1장의 코드를 참고하여 Python과 Ruby로 서명 도표를 그리는 프로그램을 작성한다.

환경 구축


Python


책'제로부터 만들기 Deep Learning'에는 Anaconda가 발행하고 환경을 구축했지만 여기서는 pip로numpy와 matplotlib만 설치하면 된다.
이번 환경은
macOS Sierra + Homebrew + pyenv + Python 3.6.1
디지털 컴퓨팅 라이브러리의 NumPy 및 드로잉 라이브러리의 Matplotlib를 설치합니다.
$ pip install numpy matplotlib

Ruby


이번 환경은
macOS Sierra + Homebrew + rbenv + Ruby 2.4.1
다차원 디지털 그룹 라이브러리의 Numo::NArray와 그림 라이브러리의 Numo::Gnuplot을 설치합니다.
$ gem install numo-narray numo-gnuplot
Numo::Gnuplot은 Gnuplot을 사용하기 때문에 Homebrew로 설치합니다.
$ brew install gnuplot

sin 함수와cos 함수 도표를 그리는 코드


Python

import numpy as np
import matplotlib
matplotlib.use("AGG") # 描画ライブラリにAGG(Anti-Grain Geometry)を使う
import matplotlib.pyplot as plt

# データの作成
x = np.arange(0, 6, 0.1) # 0から6まで0.1刻みで生成
y1 = np.sin(x)
y2 = np.cos(x)

# 数値データを確認用に出力
print("x:", *x)
print("y1:", *y1)
print("y2:", *y2)

# グラフの描画
plt.figure(figsize=(4, 3), dpi=160) # 画像サイズ
plt.plot(x, y1, label="sin")
plt.plot(x, y2, linestyle = "--", label="cos") # 破線で描画
plt.xlabel("x") # x軸のラベル
plt.ylabel("y") # y軸のラベル
plt.title("sin & cos") # タイトル
plt.legend() # 凡例
plt.savefig("python_graph.png")

Ruby

require 'numo/narray'
require 'numo/gnuplot'

# データの作成
x = Numo::DFloat.new(60).seq(0, 0.1) # 0から6まで0.1刻みで生成
y1 = Numo::DFloat::Math.sin(x)
y2 = Numo::DFloat::Math.cos(x)

# 数値データを確認用に出力
puts "x: #{x.to_a.join(' ')}"
puts "y1: #{y1.to_a.join(' ')}"
puts "y2: #{y2.to_a.join(' ')}"

# グラフの描画
g = Numo::gnuplot do
  set term: {png: {size: [640, 480]}} # 画像サイズ
  set output: 'ruby_graph.png'
  set title: 'sin \& cos' # タイトル
  set key: 'box left bottom'
  set offset: [0, 0, 0, 0]
  plot x, y1, {w: 'lines', lw: 3, title: 'sin'},
       x, y2, {w: 'lines', lw: 3, title: 'cos'}
end

출력된 이미지


Python



Ruby



참고 자료

  • Python vs Ruby'제로부터 제작 Deep Learning'총결산-Qiitahttp://qiita.com/niwasawa/items/b8191f13d6dafbc2fede
  • O'Reilly Japan-0부터 Deep Learning을 제작합니다https://www.oreilly.co.jp/books/9784873117584/
  • GitHub-oreilly-japan/deep-learning-from-scratch:'제로부터 Deep Learning'의 자료 라이브러리를 제작합니다https://github.com/oreilly-japan/deep-learning-from-scratch
  • GitHub - ruby-numo/narray: Ruby/Numo::NArray - New NArray class library https://github.com/ruby-numo/narray
  • GitHub - ruby-numo/gnuplot: Gnuplot wrapper for Ruby/Numo https://github.com/ruby-numo/gnuplot
  • 좋은 웹페이지 즐겨찾기