1+ #!/usr/bin/env python
2+ # encoding: utf-8
3+ #
4+ # Copyright © 2019, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.
5+ # SPDX-License-Identifier: Apache-2.0
6+
7+ import swat
8+ from dlpy .applications import Sequential
9+ from dlpy .layers import Dense , InputLayer , OutputLayer
10+ from sasctl import Session
11+ from sasctl .tasks import register_model , publish_model
12+
13+
14+ # Connect to the CAS server
15+ s = swat .CAS ('hostname' , 5570 , 'username' , 'password' )
16+
17+ # Upload the training data to CAS
18+ tbl = s .upload ('data/iris.csv' ).casTable
19+
20+ # Construct a simple neural network
21+ model = Sequential (conn = s , model_table = 'dlpy_model' )
22+ model .add (InputLayer ())
23+ model .add (Dense (n = 64 ))
24+ model .add (Dense (n = 32 ))
25+ model .add (OutputLayer (n = 3 ))
26+
27+ # Train on the sample
28+ model .fit (data = tbl ,
29+ inputs = ['SepalLength' , 'SepalWidth' , 'PetalLength' , 'PetalWidth' ],
30+ target = 'Species' ,
31+ max_epochs = 50 ,
32+ lr = 0.001 )
33+
34+ # Export the model as an ASTORE and get a reference to the new ASTORE table
35+ s .deeplearn .dlexportmodel (modelTable = model .model_table , initWeights = model .model_weights , casout = 'astore_table' )
36+ astore = s .CASTable ('astore_table' )
37+
38+ # Connect to the SAS environment
39+ with Session ('hostname' , 'username' , 'password' ):
40+ # Register the trained model by providing:
41+ # - the ASTORE containing the model
42+ # - a name for the model
43+ # - a name for the project
44+ #
45+ # NOTE: the force=True option will create the project if it does not exist.
46+ model = register_model (astore , 'Deep Learning' , 'Iris' , force = True )
47+
48+ # Publish the model to SAS® Micro Analytic Service (MAS). Specifically to
49+ # the default MAS service "maslocal".
50+ module = publish_model (model , 'maslocal' )
51+
52+ # sasctl wraps the published module with Python methods corresponding to
53+ # the various steps defined in the module (like "predict").
54+ response = module .score (SepalLength = 5.1 , SepalWidth = 3.5 ,
55+ PetalLength = 1.4 , PetalWidth = 0.2 )
56+
57+ s .terminate ()
0 commit comments