DLPyを使用した、ディープラーニングのfunctional APIモデル構築

0

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!

Share

About Author

Makoto Unemi (畝見 真)

ビジネスディベロップメントグループ

データ分析によりビジネス価値を創造する「ビジネス・アナリティクス」を日本市場に浸透させる活動に長年従事し、金融・製造・通信業を中心に数多くのアナリティクス・プロジェクトの提案に参画。 現在はAIプラットフォームなど新たなテクノロジーの活用に特化した提案を担当している。 ディープラーニングや機械学習などのAIテクノロジーや大規模分析基盤アーキテクチャについての豊富な知見、経験を持つ。 新たなテクノロジーでも分かりやすく解説するプレゼンテーションには定評があり、満足度の高い講演を年間、数多く行っている。

Leave A Reply

Back to Top