Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

run activepower clustering demo in tutorial recieve ' AttributeError: 'EmbeddingColumn' object has no attribute 'key'' #3131

Open
hizzyishome opened this issue May 20, 2021 · 1 comment

Comments

@hizzyishome
Copy link

Description
run activepower clustering demo in tutorial recieve ' AttributeError: 'EmbeddingColumn' object has no attribute 'key''

demo in tutorial activepower_clustering

I set mysql database locally with sql script

so I have the same data with demo.

then run:
%%sqlflow SELECT * FROM sql_flow_test.activepower_train TO TRAIN sqlflow_models.DeepEmbeddingClusterModel WITH model.n_clusters=3, model.pretrain_epochs=10, model.train_max_iters=800, model.train_lr=0.01, model.pretrain_lr=1, train.batch_size=256 COLUMN m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16,m17,m18,m19,m20,m21,m22,m23,m24,m25,m26,m27,m28,m29,m30,m31,m32,m33,m34,m35,m36,m37,m38,m39,m40,m41,m42,m43,m44,m45,m46,m47,m48 INTO sqlflow_models.my_activepower_train_model;

run activepower clustering demo in tutorial recieve ' AttributeError: 'EmbeddingColumn' object has no attribute 'key''

image

====
`2021/05/20 10:02:13 SQLFlow Step Execute:

SELECT * FROM sql_flow_test.activepower_train

TO TRAIN sqlflow_models.DeepEmbeddingClusterModel

WITH

model.n_clusters=3,

model.pretrain_epochs=10,

model.train_max_iters=800,

model.train_lr=0.01,

model.pretrain_lr=1,

train.batch_size=256

COLUMN m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16,m17,m18,m19,m20,m21,m22,m23,m24,m25,m26,m27,m28,m29,m30,m31,m32,m33,m34,m35,m36,m37,m38,m39,m40,m41,m42,m43,m44,m45,m46,m47,m48

INTO sqlflow_models.my_activepower_train_model;

Start training using keras model...

2021-05-20 10:02:38.341380 Start pre_train.

2021-05-20 10:02:38.341461 Start preparing training dataset to save into memory.

message:<message:"runSQLProgram error: failed: exit status 1\n==========Generated Code:==========\n# -- coding: utf-8 --\nimport copy\nimport traceback\nimport tensorflow as tf\nimport runtime\nfrom runtime.tensorflow.train import train\nfrom runtime.tensorflow.get_tf_version import tf_is_version2\nfrom tensorflow.estimator import (DNNClassifier,\n DNNRegressor,\n LinearClassifier,\n LinearRegressor,\n BoostedTreesClassifier,\n BoostedTreesRegressor,\n DNNLinearCombinedClassifier,\n DNNLinearCombinedRegressor)\nif tf_is_version2():\n from tensorflow.keras.optimizers import Adadelta, Adagrad, Adam, Adamax, Ftrl, Nadam, RMSprop, SGD\n from tensorflow.keras.losses import BinaryCrossentropy, CategoricalCrossentropy, CategoricalHinge, CosineSimilarity, Hinge, Huber, KLDivergence, LogCosh, MeanAbsoluteError, MeanAbsolutePercentageError, MeanSquaredError, MeanSquaredLogarithmicError, Poisson, SparseCategoricalCrossentropy, SquaredHinge\nelse:\n from tensorflow.train import AdadeltaOptimizer, AdagradOptimizer, AdamOptimizer, FtrlOptimizer, RMSPropOptimizer, GradientDescentOptimizer, MomentumOptimizer\n from tensorflow.keras.losses import BinaryCrossentropy, CategoricalCrossentropy, CategoricalHinge, CosineSimilarity, Hinge, Huber, KLDivergence, LogCosh, MeanAbsoluteError, MeanAbsolutePercentageError, MeanSquaredError, MeanSquaredLogarithmicError, Poisson, SparseCategoricalCrossentropy, SquaredHinge\ntry:\n import sqlflow_models\nexcept Exception as e:\n print("failed to import sqlflow_models: %s", e)\n traceback.print_exc()\n\nfeature_column_names = [\n"dates",\n\n"m1",\n\n"m2",\n\n"m3",\n\n"m4",\n\n"m5",\n\n"m6",\n\n"m7",\n\n"m8",\n\n"m9",\n\n"m10",\n\n"m11",\n\n"m12",\n\n"m13",\n\n"m14",\n\n"m15",\n\n"m16",\n\n"m17",\n\n"m18",\n\n"m19",\n\n"m20",\n\n"m21",\n\n"m22",\n\n"m23",\n\n"m24",\n\n"m25",\n\n"m26",\n\n"m27",\n\n"m28",\n\n"m29",\n\n"m30",\n\n"m31",\n\n"m32",\n\n"m33",\n\n"m34",\n\n"m35",\n\n"m36",\n\n"m37",\n\n"m38",\n\n"m39",\n\n"m40",\n\n"m41",\n\n"m42",\n\n"m43",\n\n"m44",\n\n"m45",\n\n"m46",\n\n"m47",\n\n"m48",\n\n"class",\n]\n\n# feature_column_names_map is used to determine the order of feature columns of each target:\n# e.g. when using DNNLinearCombinedClassifer.\n# feature_column_names_map will be saved to a single file when using PAI.\nfeature_column_names_map = dict()\n\nfeature_column_names_map["feature_columns"] = ["dates","m1","m2","m3","m4","m5","m6","m7","m8","m9","m10","m11","m12","m13","m14","m15","m16","m17","m18","m19","m20","m21","m22","m23","m24","m25","m26","m27","m28","m29","m30","m31","m32","m33","m34","m35","m36","m37","m38","m39","m40","m41","m42","m43","m44","m45","m46","m47","m48","class",]\n\n\nfeature_metas = dict()\n\n\nfeature_metas["dates"] = {\n "feature_name": "dates",\n "dtype": "string",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m1"] = {\n "feature_name": "m1",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m2"] = {\n "feature_name": "m2",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m3"] = {\n "feature_name": "m3",\n "dtype": "float32",\n "delimiter": "",\n "format": ""

,\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m4"] = {\n "feature_name": "m4",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m5"] = {\n "feature_name": "m5",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m6"] = {\n "feature_name": "m6",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m7"] = {\n "feature_name": "m7",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m8"] = {\n "feature_name": "m8",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m9"] = {\n "feature_name": "m9",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m10"] = {\n "feature_name": "m10",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m11"] = {\n "feature_name": "m11",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m12"] = {\n "feature_name": "m12",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m13"] = {\n "feature_name": "m13",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m14"] = {\n "feature_name": "m14",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m15"] = {\n "feature_name": "m15",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m16"] = {\n "feature_name": "m16",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m17"] = {\n "feature_name": "m17",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m18"] = {\n "feature_name": "m18",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "

dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m19"] = {\n "feature_name": "m19",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m20"] = {\n "feature_name": "m20",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m21"] = {\n "feature_name": "m21",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m22"] = {\n "feature_name": "m22",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m23"] = {\n "feature_name": "m23",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m24"] = {\n "feature_name": "m24",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m25"] = {\n "feature_name": "m25",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m26"] = {\n "feature_name": "m26",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m27"] = {\n "feature_name": "m27",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m28"] = {\n "feature_name": "m28",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m29"] = {\n "feature_name": "m29",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m30"] = {\n "feature_name": "m30",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m31"] = {\n "feature_name": "m31",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m32"] = {\n "feature_name": "m32",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m33"] = {\n "feature_name": "m33",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\n

feature_metas["m34"] = {\n "feature_name": "m34",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m35"] = {\n "feature_name": "m35",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m36"] = {\n "feature_name": "m36",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m37"] = {\n "feature_name": "m37",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m38"] = {\n "feature_name": "m38",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m39"] = {\n "feature_name": "m39",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m40"] = {\n "feature_name": "m40",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m41"] = {\n "feature_name": "m41",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m42"] = {\n "feature_name": "m42",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m43"] = {\n "feature_name": "m43",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m44"] = {\n "feature_name": "m44",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m45"] = {\n "feature_name": "m45",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m46"] = {\n "feature_name": "m46",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m47"] = {\n "feature_name": "m47",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["m48"] = {\n "feature_name": "m48",\n "dtype": "float32",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\nfeature_metas["class"] = {\n "feature_name": "class"

,\n "dtype": "int64",\n "delimiter": "",\n "format": "",\n "shape": [1],\n "is_sparse": "false" == "true",\n "dtype_weight": "int64",\n "delimiter_kv": ""\n}\n\n\n\nlabel_meta = {\n "feature_name": "",\n "dtype": "int64",\n "delimiter": "",\n "shape": [1],\n "is_sparse": "false" == "true"\n}\n\nmodel_params=dict()\n\nmodel_params["n_clusters"]=3\n\nmodel_params["pretrain_epochs"]=10\n\nmodel_params["pretrain_lr"]=1\n\nmodel_params["train_lr"]=0.010000\n\nmodel_params["train_max_iters"]=800\n\n\n# Construct optimizer objects to pass to model initializer.\n# The original model_params is serializable (do not have tf.xxx objects).\nmodel_params_constructed = copy.deepcopy(model_params)\nfor optimizer_arg in ["optimizer", "dnn_optimizer", "linear_optimizer"]:\n if optimizer_arg in model_params_constructed:\n model_params_constructed[optimizer_arg] = eval(model_params_constructed[optimizer_arg])\n\nif "loss" in model_params_constructed:\n model_params_constructed["loss"] = eval(model_params_constructed["loss"])\n\n# feature_columns_code will be used to save the training informations together\n# with the saved model.\nfeature_columns_code = """{"feature_columns": [tf.feature_column.embedding_column(tf.feature_column.categorical_column_with_vocabulary_list(key="dates", vocabulary_list=["2/26","3/5","3/17","3/23","4/10","5/5","1/13","1/20","2/24","4/24","6/23","1/6","1/9","6/3","2/10","3/16","2/18","4/11","4/22","5/3","6/22","1/10","1/30","6/4","6/11","6/17","6/26","1/28","5/20","5/21","2/11","3/1","3/8","4/26","5/6","5/9","1/21","2/4","5/17","4/21","4/25","5/29","6/27","2/23","3/3","4/18","4/23","5/12","2/2","3/14","3/22","4/2","4/20","5/8","5/23","5/25","1/26","1/27","6/1","4/13","1/22","3/13","4/6","4/19","2/7","3/27","4/28","6/2","6/8","1/4","1/25","3/9","3/12","3/21","4/5","6/6","2/15","3/6","2/13","3/29","2/8","2/12","2/28","3/2","3/31","4/16","5/14","1/8","1/17","5/7","5/24","2/21","2/25","3/18","4/3","6/7","6/10","6/29","2/16","3/7","6/14","6/16","6/24","1/2","3/20","4/12","5/31","2/5","4/1","5/22","6/9","6/15","6/19","6/25","6/30","1/16","3/24","3/30","6/28","1/15","1/23","1/31","2/17","3/25","4/7","1/7","1/14","5/30","6/12","3/11","3/28","5/10","1/1","1/3","2/27","3/19","4/14","4/30","5/28","6/18","1/12","1/18","6/20","4/9","5/4","5/11","5/13","5/16","1/29","2/1","2/9","2/20","5/18","5/19","1/5","1/24","5/26","6/21","3/15","5/15","4/8","4/15","5/27","1/11","4/4","2/19","3/4","3/26","4/27","4/29","6/13","1/19","2/6","3/10","4/17","5/2","2/14","2/22","6/5","2/3","5/1"]), dimension=128, combiner="sum"),\ntf.feature_column.numeric_column("m1", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m2", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m3", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m4", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m5", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m6", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m7", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m8", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m9", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m10", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m11", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m12", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m13", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_c

olumn("m14", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m15", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m16", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m17", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m18", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m19", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m20", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m21", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m22", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m23", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m24", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m25", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m26", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m27", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m28", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m29", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m30", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m31", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m32", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m33", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m34", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m35", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m36", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m37", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m38", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m39", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m40", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m41", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m42", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m43", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m44", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m45", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m46", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m47", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("m48", shape=[1], dtype=tf.dtypes.float32),\ntf.feature_column.numeric_column("class", shape=[1], dtype=tf.dtypes.int64)]}"""\nfeature_columns = eval(feature_columns_code)\n\ntrain_max_steps = 0\ntrain_max_steps = None if train_max_steps == 0 else train_max_steps\n\ntrain(datasource="mysql://yuepf:yuepf123456@tcp(192.195.253.130:3306)/?maxAllowedPacket=0",\n estimator_string="""sqlflow_models.DeepEmbeddingClusterModel""",\n select="""\nSELECT * FROM sql_flow_test.activepower_train\n""",\n validation_select="""""",\n feature_columns=feature_columns,\n feature_column_names=feature_column_names,\n feature_metas=feature_metas,\n label_meta=label_meta,\n model_params=model_params_constructed,\n validation_metrics="Accuracy".split(","),\n save="model_save",\n batch_size=256,\n epoch=1,\n validation_steps=1,\n verbose=0,\n max_steps=train_max_steps,\n validation_start_delay_secs=0,\n validation_throttle_secs=0,\n save_checkpoints_steps=100,\n log_every_n_iter=10,\n load_pretrained_model="false" == "true",\n is_pai="false" == "true",\n pai_table="",\n pai_val_table="",\n feature_columns_code=feature_columns_code,\n model_params_code_map=model_params,\n model_repo_image="",\n or

iginal_sql='''\nSELECT * FROM sql_flow_test.activepower_train\nTO TRAIN sqlflow_models.DeepEmbeddingClusterModel\nWITH\n model.n_clusters=3,\n model.pretrain_epochs=10,\n model.train_max_iters=800,\n model.train_lr=0.01,\n model.pretrain_lr=1,\n train.batch_size=256\nCOLUMN m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16,m17,m18,m19,m20,m21,m22,m23,m24,m25,m26,m27,m28,m29,m30,m31,m32,m33,m34,m35,m36,m37,m38,m39,m40,m41,m42,m43,m44,m45,m46,m47,m48\nINTO sqlflow_models.my_activepower_train_model;\n''',\n feature_column_names_map=feature_column_names_map)\n\n==========Output==========\nTraceback (most recent call last):\n File "", line 823, in \n File "/opt/sqlflow/python/runtime/tensorflow/train.py", line 116, in train\n load_pretrained_model, model_meta, is_pai)\n File "/opt/sqlflow/python/runtime/tensorflow/train_keras.py", line 144, in keras_train_and_save_legacy\n validation_steps, has_none_optimizer)\n File "/opt/sqlflow/python/runtime/tensorflow/train_keras.py", line 155, in keras_train_compiled\n classifier.sqlflow_train_loop(train_dataset)\n File "/usr/lib/python3.6/site-packages/sqlflow_models/deep_embedding_cluster.py", line 246, in sqlflow_train_loop\n self.pre_train(x)\n File "/usr/lib/python3.6/site-packages/sqlflow_models/deep_embedding_cluster.py", line 153, in pre_train\n y = x.cache().map(map_func=_concate_generate)\n File "/usr/lib/python3.6/site-packages/tensorflow_core/python/data/ops/dataset_ops.py", line 1900, in map\n MapDataset(self, map_func, preserve_cardinality=False))\n File "/usr/lib/python3.6/site-packages/tensorflow_core/python/data/ops/dataset_ops.py", line 3416, in init\n use_legacy_function=use_legacy_function)\n File "/usr/lib/python3.6/site-packages/tensorflow_core/python/data/ops/dataset_ops.py", line 2695, in init\n self._function = wrapper_fn._get_concrete_function_internal()\n File "/usr/lib/python3.6/site-packages/tensorflow_core/python/eager/function.py", line 1854, in _get_concrete_function_internal\n *args, **kwargs)\n File "/usr/lib/python3.6/site-packages/tensorflow_core/python/eager/function.py", line 1848, in _get_concrete_function_internal_garbage_collected\n graph_function, _, _ = self._maybe_define_function(args, kwargs)\n File "/usr/lib/python3.6/site-packages/tensorflow_core/python/eager/function.py", line 2150, in _maybe_define_function\n graph_function = self._create_graph_function(args, kwargs)\n File "/usr/lib/python3.6/site-packages/tensorflow_core/python/eager/function.py", line 2041, in _create_graph_function\n capture_by_value=self._capture_by_value),\n File "/usr/lib/python3.6/site-packages/tensorflow_core/python/framework/func_graph.py", line 915, in func_graph_from_py_func\n func_outputs = python_func(*func_args, **func_kwargs)\n File "/usr/lib/python3.6/site-packages/tensorflow_core/python/data/ops/dataset_ops.py", line 2689, in wrapper_fn\n ret = _wrapper_helper(*args)\n File "/usr/lib/python3.6/site-packages/tensorflow_core/python/data/ops/dataset_ops.py", line 2634, in _wrapper_helper\n ret = autograph.tf_convert(func, ag_ctx)(*nested_args)\n File "/usr/lib/python3.6/site-packages/tensorflow_core/python/autograph/impl/api.py", line 237, in wrapper\n raise e.ag_error_metadata.to_exception(e)\nAttributeError: in converted code:\n\n /usr/lib/python3.6/site-packages/sqlflow_models/deep_embedding_cluster.py:150 _concate_generate *\n concate_y = tf.stack([dataset_element[feature.key] for feature in self._feature_columns], axis=1)\n\n AttributeError: 'EmbeddingColumn' object has no attribute 'key'\n\n" >

workflow step failed: runSQLProgram error: failed: exit status 1

==========Generated Code:==========

-- coding: utf-8 --

import copy

import traceback

import tensorflow as tf

import runtime

from runtime.tensorflow.train import train

from runtime.tensorflow.get_tf_version import tf_is_version2

from tensorflow.estimator import (DNNClassifier,

                              DNNRegressor,

                              LinearClassifier,

                              LinearRegressor,

                              BoostedTreesClassifier,

                              BoostedTreesRegressor,

                              DNNLinearCombinedClassifier,

                              DNNLinearCombinedRegressor)

if tf_is_version2():

from tensorflow.keras.optimizers import Adadelta, Adagrad, Adam, Adamax, Ftrl, Nadam, RMSprop, SGD

from tensorflow.keras.losses import BinaryCrossentropy, CategoricalCrossentropy, CategoricalHinge, CosineSimilarity, Hinge, Huber, KLDivergence, LogCosh, MeanAbsoluteError, MeanAbsolutePercentageError, MeanSquaredError, MeanSquaredLogarithmicError, Poisson, SparseCategoricalCrossentropy, SquaredHinge

else:

from tensorflow.train import AdadeltaOptimizer, AdagradOptimizer, AdamOptimizer, FtrlOptimizer, RMSPropOptimizer, GradientDescentOptimizer, MomentumOptimizer

from tensorflow.keras.losses import BinaryCrossentropy, CategoricalCrossentropy, CategoricalHinge, CosineSimilarity, Hinge, Huber, KLDivergence, LogCosh, MeanAbsoluteError, MeanAbsolutePercentageError, MeanSquaredError, MeanSquaredLogarithmicError, Poisson, SparseCategoricalCrossentropy, SquaredHinge

try:

import sqlflow_models

except Exception as e:

print("failed to import sqlflow_models: %s", e)

traceback.print_exc()

feature_column_names = [

"dates",

"m1",

"m2",

"m3",

"m4",

"m5",

"m6",

"m7",

"m8",

"m9",

"m10",

"m11",

"m12",

"m13",

"m14",

"m15",

"m16",

"m17",

"m18",

"m19",

"m20",

"m21",

"m22",

"m23",

"m24",

"m25",

"m26",

"m27",

"m28",

"m29",

"m30",

"m31",

"m32",

"m33",

"m34",

"m35",

"m36",

"m37",

"m38",

"m39",

"m40",

"m41",

"m42",

"m43",

"m44",

"m45",

"m46",

"m47",

"m48",

"class",

]

feature_column_names_map is used to determine the order of feature columns of each target:

e.g. when using DNNLinearCombinedClassifer.

feature_column_names_map will be saved to a single file when using PAI.

feature_column_names_map = dict()

feature_column_names_map["feature_columns"] = ["dates","m1","m2","m3","m4","m5","m6","m7","m8","m9","m10","m11","m12","m13","m14","m15","m16","m17","m18","m19","m20","m21","m22","m23","m24","m25","m26","m27","m28","m29","m30","m31","m32","m33","m34","m35","m36","m37","m38","m39","m40","m41","m42","m43","m44","m45","m46","m47","m48","class",]

feature_metas = dict()

feature_metas["dates"] = {

"feature_name": "dates",

"dtype": "string",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m1"] = {

"feature_name": "m1",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m2"] = {

"feature_name": "m2",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m3"] = {

"feature_name": "m3",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m4"] = {

"feature_name": "m4",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m5"] = {

"feature_name": "m5",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m6"] = {

"feature_name": "m6",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m7"] = {

"feature_name": "m7",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m8"] = {

"feature_name": "m8",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m9"] = {

"feature_name": "m9",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m10"] = {

"feature_name": "m10",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m11"] = {

"feature_name": "m11",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m12"] = {

"feature_name": "m12",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m13"] = {

"feature_name": "m13",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m14"] = {

"feature_name": "m14",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m15"] = {

"feature_name": "m15",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m16"] = {

"feature_name": "m16",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m17"] = {

"feature_name": "m17",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m18"] = {

"feature_name": "m18",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m19"] = {

"feature_name": "m19",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m20"] = {

"feature_name": "m20",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m21"] = {

"feature_name": "m21",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m22"] = {

"feature_name": "m22",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m23"] = {

"feature_name": "m23",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m24"] = {

"feature_name": "m24",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m25"] = {

"feature_name": "m25",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m26"] = {

"feature_name": "m26",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m27"] = {

"feature_name": "m27",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m28"] = {

"feature_name": "m28",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m29"] = {

"feature_name": "m29",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m30"] = {

"feature_name": "m30",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m31"] = {

"feature_name": "m31",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m32"] = {

"feature_name": "m32",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m33"] = {

"feature_name": "m33",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m34"] = {

"feature_name": "m34",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m35"] = {

"feature_name": "m35",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m36"] = {

"feature_name": "m36",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m37"] = {

"feature_name": "m37",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m38"] = {

"feature_name": "m38",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m39"] = {

"feature_name": "m39",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m40"] = {

"feature_name": "m40",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m41"] = {

"feature_name": "m41",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m42"] = {

"feature_name": "m42",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m43"] = {

"feature_name": "m43",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m44"] = {

"feature_name": "m44",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m45"] = {

"feature_name": "m45",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m46"] = {

"feature_name": "m46",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m47"] = {

"feature_name": "m47",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["m48"] = {

"feature_name": "m48",

"dtype": "float32",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

feature_metas["class"] = {

"feature_name": "class",

"dtype": "int64",

"delimiter": "",

"format": "",

"shape": [1],

"is_sparse": "false" == "true",

"dtype_weight": "int64",

"delimiter_kv": ""

}

label_meta = {

"feature_name": "",

"dtype": "int64",

"delimiter": "",

"shape": [1],

"is_sparse": "false" == "true"

}

model_params=dict()

model_params["n_clusters"]=3

model_params["pretrain_epochs"]=10

model_params["pretrain_lr"]=1

model_params["train_lr"]=0.010000

model_params["train_max_iters"]=800

Construct optimizer objects to pass to model initializer.

The original model_params is serializable (do not have tf.xxx objects).

model_params_constructed = copy.deepcopy(model_params)

for optimizer_arg in ["optimizer", "dnn_optimizer", "linear_optimizer"]:

if optimizer_arg in model_params_constructed:

    model_params_constructed[optimizer_arg] = eval(model_params_constructed[optimizer_arg])

if "loss" in model_params_constructed:

model_params_constructed["loss"] = eval(model_params_constructed["loss"])

feature_columns_code will be used to save the training informations together

with the saved model.

feature_columns_code = """{"feature_columns": [tf.feature_column.embedding_column(tf.feature_column.categorical_column_with_vocabulary_list(key="dates", vocabulary_list=["2/26","3/5","3/17","3/23","4/10","5/5","1/13","1/20","2/24","4/24","6/23","1/6","1/9","6/3","2/10","3/16","2/18","4/11","4/22","5/3","6/22","1/10","1/30","6/4","6/11","6/17","6/26","1/28","5/20","5/21","2/11","3/1","3/8","4/26","5/6","5/9","1/21","2/4","5/17","4/21","4/25","5/29","6/27","2/23","3/3","4/18","4/23","5/12","2/2","3/14","3/22","4/2","4/20","5/8","5/23","5/25","1/26","1/27","6/1","4/13","1/22","3/13","4/6","4/19","2/7","3/27","4/28","6/2","6/8","1/4","1/25","3/9","3/12","3/21","4/5","6/6","2/15","3/6","2/13","3/29","2/8","2/12","2/28","3/2","3/31","4/16","5/14","1/8","1/17","5/7","5/24","2/21","2/25","3/18","4/3","6/7","6/10","6/29","2/16","3/7","6/14","6/16","6/24","1/2","3/20","4/12","5/31","2/5","4/1","5/22","6/9","6/15","6/19","6/25","6/30","1/16","3/24","3/30","6/28","1/15","1/23","1/31","2/17","3/25","4/7","1/7","1/14","5/30","6/12","3/11","3/28","5/10","1/1","1/3","2/27","3/19","4/14","4/30","5/28","6/18","1/12","1/18","6/20","4/9","5/4","5/11","5/13","5/16","1/29","2/1","2/9","2/20","5/18","5/19","1/5","1/24","5/26","6/21","3/15","5/15","4/8","4/15","5/27","1/11","4/4","2/19","3/4","3/26","4/27","4/29","6/13","1/19","2/6","3/10","4/17","5/2","2/14","2/22","6/5","2/3","5/1"]), dimension=128, combiner="sum"),

tf.feature_column.numeric_column("m1", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m2", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m3", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m4", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m5", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m6", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m7", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m8", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m9", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m10", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m11", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m12", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m13", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m14", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m15", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m16", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m17", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m18", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m19", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m20", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m21", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m22", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m23", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m24", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m25", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m26", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m27", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m28", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m29", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m30", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m31", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m32", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m33", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m34", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m35", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m36", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m37", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m38", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m39", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m40", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m41", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m42", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m43", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m44", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m45", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m46", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m47", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("m48", shape=[1], dtype=tf.dtypes.float32),

tf.feature_column.numeric_column("class", shape=[1], dtype=tf.dtypes.int64)]}"""

feature_columns = eval(feature_columns_code)

train_max_steps = 0

train_max_steps = None if train_max_steps == 0 else train_max_steps

train(datasource="mysql://yuepf:yuepf123456@tcp(192.195.253.130:3306)/?maxAllowedPacket=0",

  estimator_string="""sqlflow_models.DeepEmbeddingClusterModel""",

  select="""

SELECT * FROM sql_flow_test.activepower_train

""",

  validation_select="""""",

  feature_columns=feature_columns,

  feature_column_names=feature_column_names,

  feature_metas=feature_metas,

  label_meta=label_meta,

  model_params=model_params_constructed,

  validation_metrics="Accuracy".split(","),

  save="model_save",

  batch_size=256,

  epoch=1,

  validation_steps=1,

  verbose=0,

  max_steps=train_max_steps,

  validation_start_delay_secs=0,

  validation_throttle_secs=0,

  save_checkpoints_steps=100,

  log_every_n_iter=10,

  load_pretrained_model="false" == "true",

  is_pai="false" == "true",

  pai_table="",

  pai_val_table="",

  feature_columns_code=feature_columns_code,

  model_params_code_map=model_params,

  model_repo_image="",

  original_sql='''

SELECT * FROM sql_flow_test.activepower_train

TO TRAIN sqlflow_models.DeepEmbeddingClusterModel

WITH

model.n_clusters=3,

model.pretrain_epochs=10,

model.train_max_iters=800,

model.train_lr=0.01,

model.pretrain_lr=1,

train.batch_size=256

COLUMN m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16,m17,m18,m19,m20,m21,m22,m23,m24,m25,m26,m27,m28,m29,m30,m31,m32,m33,m34,m35,m36,m37,m38,m39,m40,m41,m42,m43,m44,m45,m46,m47,m48

INTO sqlflow_models.my_activepower_train_model;

''',

  feature_column_names_map=feature_column_names_map)

==========Output==========

Traceback (most recent call last):

File "", line 823, in

File "/opt/sqlflow/python/runtime/tensorflow/train.py", line 116, in train

load_pretrained_model, model_meta, is_pai)

File "/opt/sqlflow/python/runtime/tensorflow/train_keras.py", line 144, in keras_train_and_save_legacy

validation_steps, has_none_optimizer)

File "/opt/sqlflow/python/runtime/tensorflow/train_keras.py", line 155, in keras_train_compiled

classifier.sqlflow_train_loop(train_dataset)

File "/usr/lib/python3.6/site-packages/sqlflow_models/deep_embedding_cluster.py", line 246, in sqlflow_train_loop

self.pre_train(x)

File "/usr/lib/python3.6/site-packages/sqlflow_models/deep_embedding_cluster.py", line 153, in pre_train

y = x.cache().map(map_func=_concate_generate)

File "/usr/lib/python3.6/site-packages/tensorflow_core/python/data/ops/dataset_ops.py", line 1900, in map

MapDataset(self, map_func, preserve_cardinality=False))

File "/usr/lib/python3.6/site-packages/tensorflow_core/python/data/ops/dataset_ops.py", line 3416, in init

use_legacy_function=use_legacy_function)

File "/usr/lib/python3.6/site-packages/tensorflow_core/python/data/ops/dataset_ops.py", line 2695, in init

self._function = wrapper_fn._get_concrete_function_internal()

File "/usr/lib/python3.6/site-packages/tensorflow_core/python/eager/function.py", line 1854, in _get_concrete_function_internal

*args, **kwargs)

File "/usr/lib/python3.6/site-packages/tensorflow_core/python/eager/function.py", line 1848, in _get_concrete_function_internal_garbage_collected

graph_function, _, _ = self._maybe_define_function(args, kwargs)

File "/usr/lib/python3.6/site-packages/tensorflow_core/python/eager/function.py", line 2150, in _maybe_define_function

graph_function = self._create_graph_function(args, kwargs)

File "/usr/lib/python3.6/site-packages/tensorflow_core/python/eager/function.py", line 2041, in _create_graph_function

capture_by_value=self._capture_by_value),

File "/usr/lib/python3.6/site-packages/tensorflow_core/python/framework/func_graph.py", line 915, in func_graph_from_py_func

func_outputs = python_func(*func_args, **func_kwargs)

File "/usr/lib/python3.6/site-packages/tensorflow_core/python/data/ops/dataset_ops.py", line 2689, in wrapper_fn

ret = _wrapper_helper(*args)

File "/usr/lib/python3.6/site-packages/tensorflow_core/python/data/ops/dataset_ops.py", line 2634, in _wrapper_helper

ret = autograph.tf_convert(func, ag_ctx)(*nested_args)

File "/usr/lib/python3.6/site-packages/tensorflow_core/python/autograph/impl/api.py", line 237, in wrapper

raise e.ag_error_metadata.to_exception(e)

AttributeError: in converted code:

/usr/lib/python3.6/site-packages/sqlflow_models/deep_embedding_cluster.py:150 _concate_generate  *

    concate_y = tf.stack([dataset_element[feature.key] for feature in self._feature_columns], axis=1)

AttributeError: 'EmbeddingColumn' object has no attribute 'key'`

Environment (Please complete the following information):

  • OS:Windos 10
  • Browser:Chrome
  • docker destop
  • Docker Engine : v20.10.6
  • Kubernetes: v1.19.7
@chunyang-wen
Copy link

Could you please provide the version of tensorflow you are using?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants