sassoftware / python-dlpy

The SAS Deep Learning Python (DLPy) package provides the high-level Python APIs to deep learning methods in SAS Visual Data Mining and Machine Learning. It allows users to build deep learning models using friendly Keras-like APIs.
Apache License 2.0
224 stars 131 forks source link

Model.from_keras_model got an error #371

Closed witkophdw closed 1 year ago

witkophdw commented 3 years ago

I made in keras a forecast model and i want to implement the model to dlpy (cas). I am using Model.from_keras_model

keras part: import numpy as np import tensorflow as tf from tensorflow import keras import pandas as pd import seaborn as sns from pylab import rcParams import matplotlib.pyplot as plt from matplotlib import rc from pandas.plotting import register_matplotlib_converters

%matplotlib inline %config InlineBackend.figure_format='retina'

register_matplotlib_converters() sns.set(style='whitegrid', palette='muted', font_scale=1.5)

rcParams['figure.figsize'] = 22, 10

RANDOM_SEED = 42

np.random.seed(RANDOM_SEED) tf.random.set_seed(RANDOM_SEED)

model = keras.Sequential() model.add(keras.layers.LSTM( units=64, input_shape=(X_train.shape[1], X_train.shape[2]) )) model.add(keras.layers.Dropout(rate=0.2)) model.add(keras.layers.RepeatVector(n=X_train.shape[1])) model.add(keras.layers.LSTM(units=64, return_sequences=True)) model.add(keras.layers.Dropout(rate=0.2)) model.add(keras.layers.TimeDistributed(keras.layers.Dense(units=X_train.shape[2]))) model.compile(loss='mae', optimizer='adam')

history = model.fit( X_train, y_train, epochs=10, batch_size=32, validation_split=0.1, shuffle=False )

model.save('my_model.h5')

dlpy part

import swat from dlpy import Model import os import numpy as np

conn=swat.CAS('xxxxx', '443', userid, password, protocol='https')

client_image_root = "C:/temp/Deep-Learning-For-Hackers"

if os.path.isdir(client_image_root): print("Image directory exists, assuming image files are prepared for loading into CAS table.") else: os.mkdir(client_image_root)

model_name = 'my_model'

NOTE: Keras model weight file resides on client computer

model1 = Model.from_keras_model(conn=conn, keras_model=model, output_model_table=model_name, include_weights=True,
input_weights_file=os.path.join(client_image_root,"my_model.h5")
)

my error:

AttributeError Traceback (most recent call last)

in 2 3 # NOTE: Keras model weight file resides on client computer ----> 4 model1 = Model.from_keras_model(conn=conn, 5 keras_model=model, 6 output_model_table=model_name, ~\Anaconda3\lib\site-packages\dlpy\network.py in from_keras_model(cls, conn, keras_model, output_model_table, offsets, std, scale, max_num_frames, include_weights, input_weights_file, verbose) 541 ''' 542 --> 543 from .model_conversion.sas_keras_parse import keras_to_sas 544 if output_model_table is None: 545 output_model_table = dict(name=random_name('keras_model', 6)) ~\Anaconda3\lib\site-packages\dlpy\model_conversion\sas_keras_parse.py in 21 import os 22 ---> 23 from keras import backend as K 24 from distutils.version import StrictVersion 25 import keras ~\Anaconda3\lib\site-packages\keras\__init__.py in 18 from . import callbacks 19 from . import constraints ---> 20 from . import initializers 21 from . import metrics 22 from . import models ~\Anaconda3\lib\site-packages\keras\initializers\__init__.py in 122 # from ALL_OBJECTS. We make no guarantees as to whether these objects will 123 # using their correct version. --> 124 populate_deserializable_objects() 125 globals().update(LOCAL.ALL_OBJECTS) 126 ~\Anaconda3\lib\site-packages\keras\initializers\__init__.py in populate_deserializable_objects() 80 v2_objs = {} 81 base_cls = initializers_v2.Initializer ---> 82 generic_utils.populate_dict_with_module_objects( 83 v2_objs, 84 [initializers_v2], AttributeError: module 'keras.utils.generic_utils' has no attribute 'populate_dict_with_module_objects'
dxq77dxq commented 3 years ago

Hello, the error message looks like it's from keras side. https://github.com/keras-team/keras/issues/14632