{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.14","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":84493,"databundleVersionId":9871156,"sourceType":"competition"}],"dockerImageVersionId":30786,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"### NEED FOR HELP\n\nI cannot submit with TF model : [supporting discussion](https://www.kaggle.com/competitions/jane-street-real-time-market-data-forecasting/discussion/541396).","metadata":{"execution":{"iopub.status.busy":"2024-10-18T15:37:03.579529Z","iopub.execute_input":"2024-10-18T15:37:03.581126Z","iopub.status.idle":"2024-10-18T15:37:04.078382Z","shell.execute_reply.started":"2024-10-18T15:37:03.581065Z","shell.execute_reply":"2024-10-18T15:37:04.076807Z"}}},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport polars as pl\nimport kaggle_evaluation.jane_street_inference_server\nimport os","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-10-20T12:42:55.936436Z","iopub.execute_input":"2024-10-20T12:42:55.937470Z","iopub.status.idle":"2024-10-20T12:42:55.942789Z","shell.execute_reply.started":"2024-10-20T12:42:55.937414Z","shell.execute_reply":"2024-10-20T12:42:55.941497Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import tensorflow as tf\nimport tensorflow.keras.models as M\nimport tensorflow.keras.layers as L","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-10-20T12:42:56.236976Z","iopub.execute_input":"2024-10-20T12:42:56.237442Z","iopub.status.idle":"2024-10-20T12:42:56.243209Z","shell.execute_reply.started":"2024-10-20T12:42:56.237399Z","shell.execute_reply":"2024-10-20T12:42:56.241795Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def make_model(nh=50):\n    x_in = L.Input(name=\"inps\", shape=(79,) )\n    x = L.BatchNormalization(name=\"norm\")(x_in)\n    #x = x_in\n    \n    act = \"relu\"\n    x = L.Dense(nh, name=\"d1\", activation=act)(x)\n    x = L.Dense(nh, name=\"d2\", activation=act)(x)\n    preds = L.Dense(1, name=\"preds\", activation=\"linear\")(x) \n    \n    model = M.Model(x_in, preds, name='ANN')\n    model.compile(loss=\"mse\", optimizer='adam')\n    \n    return model\n#======================","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-10-20T12:42:56.491467Z","iopub.execute_input":"2024-10-20T12:42:56.492571Z","iopub.status.idle":"2024-10-20T12:42:56.506572Z","shell.execute_reply.started":"2024-10-20T12:42:56.492491Z","shell.execute_reply":"2024-10-20T12:42:56.503873Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"FE = [f\"feature_{str(i).zfill(2)}\" for i in range(79)]\nmodel = make_model()\nprint(model.summary())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-10-20T12:42:56.807032Z","iopub.execute_input":"2024-10-20T12:42:56.807582Z","iopub.status.idle":"2024-10-20T12:42:56.867581Z","shell.execute_reply.started":"2024-10-20T12:42:56.807528Z","shell.execute_reply":"2024-10-20T12:42:56.866448Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"TRY = True\nif TRY:\n    x = np.random.normal(0,1,size=(100,79))\n    p = model.predict(x, batch_size=512, verbose=0)[:,0]\n    print(p.shape)\n    print(p[:10])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-10-20T12:42:57.178926Z","iopub.execute_input":"2024-10-20T12:42:57.179381Z","iopub.status.idle":"2024-10-20T12:42:57.315120Z","shell.execute_reply.started":"2024-10-20T12:42:57.179340Z","shell.execute_reply":"2024-10-20T12:42:57.313780Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### FUNCTION","metadata":{}},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def predict(test,lags):\n    global FE\n    predictions = test.select(\n        'row_id',\n        pl.lit(0.0).alias('responder_6'),\n    )\n    x = test[FE].to_pandas().fillna(3).values\n    preds = model.predict(x, batch_size=512, verbose=0)[:, 0]\n    preds = np.clip(preds, -5, 5)\n\n    predictions = predictions.with_columns(pl.Series('responder_6', preds.ravel()))\n    return predictions","metadata":{"execution":{"iopub.status.busy":"2024-10-20T12:42:58.959560Z","iopub.execute_input":"2024-10-20T12:42:58.959992Z","iopub.status.idle":"2024-10-20T12:42:58.969001Z","shell.execute_reply.started":"2024-10-20T12:42:58.959953Z","shell.execute_reply":"2024-10-20T12:42:58.967630Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### SUBMIT","metadata":{}},{"cell_type":"code","source":"inference_server = kaggle_evaluation.jane_street_inference_server.JSInferenceServer(predict)\n\nif os.getenv('KAGGLE_IS_COMPETITION_RERUN'):\n    inference_server.serve()\nelse:\n    inference_server.run_local_gateway(\n        (\n            '/kaggle/input/jane-street-real-time-market-data-forecasting/test.parquet',\n            '/kaggle/input/jane-street-real-time-market-data-forecasting/lags.parquet',\n        )\n    )","metadata":{"execution":{"iopub.status.busy":"2024-10-20T12:42:59.765772Z","iopub.execute_input":"2024-10-20T12:42:59.766190Z","iopub.status.idle":"2024-10-20T12:43:00.281051Z","shell.execute_reply.started":"2024-10-20T12:42:59.766150Z","shell.execute_reply":"2024-10-20T12:43:00.279621Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}