-
Notifications
You must be signed in to change notification settings - Fork 17
Description
When I test the dnnregressor in local, an error reported "Data truncated for column 'medv' at row 1", the detail reproduce way is the following:
First, add a function to sqlflow_models/dnnregressor.py as follows:
def prepare_prediction_column(prediction):
"""Return the prediction directly."""
return prediction
then, test the model in a local docker image.
%%sqlflow
SELECT * FROM boston.train
TO TRAIN sqlflow_models.DNNRegressor WITH
model.hidden_units = [10, 10],
train.epoch = 10,
validation.select = "select * from boston.test",
validation.metrics="MeanSquaredError"
LABEL medv
INTO sqlflow_models.my_dnn_ref_model;
%%sqlflow
SELECT * FROM boston.test
TO PREDICT boston.predict_dnnref.medv
USING sqlflow_models.my_dnn_ref_model;
the error is :
debug_error_string = "{"created":"@1578055632.413593300","description":"Error received from peer ipv4:127.0.0.1:50051","file":"src/core/lib/surface/call.cc","file_line":1056,"grpc_message":"failed: exit status 1\n==========Program==========\n\nfrom sqlflow_submitter.tensorflow.predict import pred\nfrom sqlflow_submitter.tensorflow.train import TF_VERSION_2\nimport tensorflow as tf\nif TF_VERSION_2:\n from tensorflow.keras.optimizers import *\nelse:\n from tensorflow.train import *\ntry:\n import sqlflow_models\nexcept:\n pass\n\nfeature_column_names = [\n"crim",\n\n"zn",\n\n"indus",\n\n"chas",\n\n"nox",\n\n"rm",\n\n"age",\n\n"dis",\n\n"rad",\n\n"tax",\n\n"ptratio",\n\n"b",\n\n"lstat",\n]\n\nfeature_metas = dict()\n\nfeature_metas["crim"] = {\n "feature_name": "crim",\n "dtype": "float32",\n "delimiter": "",\n "shape": [1],\n "is_sparse": "false" == "true"\n}\n\nfeature_metas["zn"] = {\n "feature_name": "zn",\n "dtype": "float32",\n "delimiter": "",\n "shape": [1],\n "is_sparse": "false" == "true"\n}\n\nfeature_metas["indus"] = {\n "feature_name": "indus",\n "dtype": "float32",\n "delimiter": "",\n "shape": [1],\n "is_sparse": "false" == "true"\n}\n\nfeature_metas["chas"] = {\n "feature_name": "chas",\n "dtype": "int64",\n "delimiter": "",\n "shape": [1],\n "is_sparse": "false" == "true"\n}\n\nfeature_metas["nox"] = {\n "feature_name": "nox",\n "dtype": "float32",\n "delimiter": "",\n "shape": [1],\n "is_sparse": "false" == "true"\n}\n\nfeature_metas["rm"] = {\n "feature_name": "rm",\n "dtype": "float32",\n "delimiter": "",\n "shape": [1],\n "is_sparse": "false" == "true"\n}\n\nfeature_metas["age"] = {\n "feature_name": "age",\n "dtype": "float32",\n "delimiter": "",\n "shape": [1],\n "is_sparse": "false" == "true"\n}\n\nfeature_metas["dis"] = {\n "feature_name": "dis",\n "dtype": "float32",\n "delimiter": "",\n "shape": [1],\n "is_sparse": "false" == "true"\n}\n\nfeature_metas["rad"] = {\n "feature_name": "rad",\n "dtype": "int64",\n "delimiter": "",\n "shape": [1],\n "is_sparse": "false" == "true"\n}\n\nfeature_metas["tax"] = {\n "feature_name": "tax",\n "dtype": "int64",\n "delimiter": "",\n "shape": [1],\n "is_sparse": "false" == "true"\n}\n\nfeature_metas["ptratio"] = {\n "feature_name": "ptratio",\n "dtype": "float32",\n "delimiter": "",\n "shape": [1],\n "is_sparse": "false" == "true"\n}\n\nfeature_metas["b"] = {\n "feature_name": "b",\n "dtype": "float32",\n "delimiter": "",\n "shape": [1],\n "is_sparse": "false" == "true"\n}\n\nfeature_metas["lstat"] = {\n "feature_name": "lstat",\n "dtype": "float32",\n "delimiter": "",\n "shape": [1],\n "is_sparse": "false" == "true"\n}\n\n\nlabel_meta = {\n "feature_name": "medv",\n "dtype": "int64",\n "delimiter": "",\n "shape": [],\n "is_sparse": "false" == "true"\n}\n\nmodel_params=dict()\n\nmodel_params["hidden_units"]=[10,10]\n\n\nfeature_columns = {"feature_columns": [tf.feature_column.numeric_column("crim", shape=[1]),\ntf.feature_column.numeric_column("zn", shape=[1]),\ntf.feature_column.numeric_column("indus", shape=[1]),\ntf.feature_column.numeric_column("chas", shape=[1]),\ntf.feature_column.numeric_column("nox", shape=[1]),\ntf.feature_column.numeric_column("rm", shape=[1]),\ntf.feature_column.numeric_column("age", shape=[1]),\ntf.feature_column.numeric_column("dis", shape=[1]),\ntf.feature_column.numeric_column("rad", shape=[1]),\ntf.feature_column.numeric_column("tax", shape=[1]),\ntf.feature_column.numeric_column("ptratio", shape=[1]),\ntf.feature_column.numeric_column("b", shape=[1]),\ntf.feature_column.numeric_column("lstat", shape=[1])]}\n\npred(is_keras_model="true" == "true",\n datasource="mysql://root:root@tcp(127.0.0.1:3306)/?maxAllowedPacket=0",\n estimator=sqlflow_models.DNNRegressor,\n select="""SELECT * FROM boston.test\n""",\n result_table="boston.predict_dnnref",\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,\n save="model_save",\n batch_size=1,\n hdfs_namenode_addr="",\n hive_location="",\n hdfs_user="",\n hdfs_pass="",\n is_pai="false" == "true",\n pai_table="")\n\n==========Output==========\nTraceback (most recent call last):\n File "", line 194, in \n File "/miniconda/envs/sqlflow-dev/lib/python3.6/site-packages/sqlflow_submitter/tensorflow/predict.py", line 173, in pred\n hdfs_namenode_addr, hive_location, hdfs_user, hdfs_pass)\n File "/miniconda/envs/sqlflow-dev/lib/python3.6/site-packages/sqlflow_submitter/tensorflow/predict.py", line 92, in keras_predict\n w.write(row)\n File "/miniconda/envs/sqlflow-dev/lib/python3.6/contextlib.py", line 88, in exit\n next(self.gen)\n File "/miniconda/envs/sqlflow-dev/lib/python3.6/site-packages/sqlflow_submitter/db.py", line 224, in buffered_db_writer\n w.close()\n File "/miniconda/envs/sqlflow-dev/lib/python3.6/site-packages/sqlflow_submitter/db_writer/base.py", line 36, in close\n self.flush()\n File "/miniconda/envs/sqlflow-dev/lib/python3.6/site-packages/sqlflow_submitter/db_writer/mysql.py", line 27, in flush\n cursor.executemany(statement, self.rows)\n File "/miniconda/envs/sqlflow-dev/lib/python3.6/site-packages/MySQLdb/cursors.py", line 237, in executemany\n self._get_db().encoding)\n File "/miniconda/envs/sqlflow-dev/lib/python3.6/site-packages/MySQLdb/cursors.py", line 264, in _do_execute_many\n rows += self.execute(sql + postfix)\n File "/miniconda/envs/sqlflow-dev/lib/python3.6/site-packages/MySQLdb/cursors.py", line 209, in execute\n res = self._query(query)\n File "/miniconda/envs/sqlflow-dev/lib/python3.6/site-packages/MySQLdb/cursors.py", line 315, in _query\n db.query(q)\n File "/miniconda/envs/sqlflow-dev/lib/python3.6/site-packages/MySQLdb/connections.py", line 226, in query\n _mysql.connection.query(self, query)\nMySQLdb._exceptions.DataError: (1265, "Data truncated for column 'medv' at row 1")\n","grpc_status":2}"