SAS Viyaの分析機能をPythonから利用するためのハイレベルAPIパッケージであるDLPyでは、kerasと同等の簡潔なコーディングで、複雑な画像処理やディープラーニングを実行することができます。
そして、DLPyでは、kerasと同様に、2つの手法でディープラーニングのモデルを構築することができます。
Sequential modelとfunctional API modelです。
Sequentialとは、その名の通り、レイヤーを順序通りに積み重ねて、順序通りに実行していくモデルです。
以下は、DLPyを用いて、PythonからSAS Viyaのディープラーニング機能を使用して画像分類向けsequential modelのネットワークを定義している例です。
In [10]:
model1 = Sequential(sess, model_table='Simple_CNN') model1.add(InputLayer(3, 224, 224, offsets=tr_img.channel_means)) model1.add(Conv2d(8, 7)) model1.add(Pooling(2)) model1.add(Conv2d(8, 7)) model1.add(Pooling(2)) model1.add(Dense(16)) model1.add(OutputLayer(act='softmax', n=2)) |
In [11]:
model1.print_summary() |
Out[11]:
In [12]:
model1.plot_network() |
Out[12]:
一方、functional APIは、sequentialでは、表現することが難しい、より複雑な構造のモデルを構築する際に利用されます。
以下は、kerasの公式サイトに記載されている文面です。
“functional APIは,複数の出力があるモデルや有向非巡回グラフ,共有レイヤーを持ったモデルなどの複雑なモデルを定義するためのインターフェースです.”
そして、DLPyでは、kerasと同様にsequential modelだけでなく、functional API modelの構築も可能になっています。
以下はその一例として、複数の入力と出力を持つような画像分類のためのディープラーニングモデルのネットワーク例です。
まず、テンソルオブジェクトを返すInput()によって、2つのテンソル、グレースケール画像とカラー(RGB)画像、を定義します。
グレースケール画像は2つの畳み込み層に送り込まれます。カラー画像はそれらとは別の畳み込み層に送り込まれます。
次に畳み込み演算を用いて画像の特徴を抽出します。
すべての特徴が抽出されたら、3つのテンソルが連結され、OutputLayer_1によって分類損失の計算に使用されます。
また、カラー画像から抽出された特徴量はOutputLayer_2でも処理されます。
In [3]:
input1 = Input(n_channels = 1, width = 28, height = 28) input2 = Input(n_channels = 3, width = 28, height = 28) conv1 = Conv2d(2, name='conv1')(Conv2d(2, name='conv0')(input1)) conv2 = Conv2d(2, name='conv2')(input1) conv3 = Conv2d(2, name='conv3')(input2) output2 = OutputLayer(n=2)(conv3) concat1 = Concat()([conv1, conv2, conv3]) output1 = OutputLayer(n=2)(concat1) |
定義済みの入力テンソルと出力テンソルがmodel()関数に渡され、次にcompile()でネットワークがコンパイルされます。
In [4]:
model1 = Model(conn = sess, inputs = [input1, input2], outputs = [output1, output2]) model1.compile() model1.print_summary() |
Out[4]:
In [6]:
model1.plot_network() |
以上のようにDLPyを用いることで、PythonからSAS Viyaのディープラーニング機能を使用してfunctional API modelを構築することができるんですね。
※DLPyを用いたfunctional APIモデル構築に関しては、Githubに公開されているサンプルでもご覧いただけます。
※Enterprise Open Analytics Platform 「SAS Viya」 を知りたいなら「特設サイト」へGO!