{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import numpy as np \nimport pandas as pd \nimport matplotlib.pyplot as plt\nimport pickle\nimport os\nfrom sklearn.cluster import KMeans\nfrom pandas.api.types import CategoricalDtype\nfrom sklearn.preprocessing import StandardScaler","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","collapsed":true,"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":false},"cell_type":"code","source":"import tensorflow as tf\nfrom tensorflow import keras\nassert tf.__version__ >= \"2.0\"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print(np.__version__)\nprint(pd.__version__)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Settings"},{"metadata":{"trusted":true},"cell_type":"code","source":"np.random.seed(42) # generating random see\ntf.random.set_seed(42) # setting random seed","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"folder ='/Users/Home/Downloads/'","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Load Data"},{"metadata":{"trusted":true},"cell_type":"code","source":"outfile = open(folder+'RNN_Train_0Valid/trainModelInput_4.pkl','rb')\nvalid_forTrainGen = pickle.load(outfile)\noutfile.close()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Model Config"},{"metadata":{"trusted":true},"cell_type":"code","source":"len_listOfGroups = 393651  #29104\nmaxFileCount = 7\ninput_size = 204\nprint(input_size)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"\nrnn_batch_size=1\nsteps_per_epoch_train=50000\n#activation_function = 'tanh'\n#rnn_initializer = 'glorot_normal'\nactivation_function = 'relu'\nrnn_initializer = 'he_normal'\n\n\nrnn_epochs=400\n#rnn_loss = tf.losses.MeanSquaredError()\n#rnn_loss = 'binary_crossentropy'\nrnn_loss = tf.keras.losses.BinaryCrossentropy()\nrnn_learning_rate='auto'\nrnn_learning_rate_default = .001\n#rnn_optimizer = keras.optimizers.Adam(lr=rnn_learning_rate_default, beta_1=.9, beta_2=.999 )\nrnn_optimizer = keras.optimizers.Nadam(lr=rnn_learning_rate_default, beta_1=.9, beta_2=.999 )\nregularizer_factor = .0000001\nrnn_regularizer = keras.regularizers.l1(regularizer_factor)\ndropout_rate = 0.05","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Callback Functions"},{"metadata":{"trusted":true},"cell_type":"code","source":"root_logdir = os.path.join(os.curdir, \"my_logs\")\ndef get_run_logdir():\n    import time\n    run_id = time.strftime(\"run_%Y_%m_%d-%H_%M_%S\")\n    return os.path.join(root_logdir, run_id)\n\nrun_logdir = get_run_logdir()\nprint(run_logdir)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"tensorboard_cb = keras.callbacks.TensorBoard(run_logdir)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"checkpoint_cb_best = keras.callbacks.ModelCheckpoint(folderOfModel+\"best_model.h5\", save_best_only=True)\ncheckpoint_cb = keras.callbacks.ModelCheckpoint(folderOfModel+\"latest_model.h5\", save_freq='epoch')","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Generators"},{"metadata":{"trusted":true},"cell_type":"code","source":"def nextFileData():\n    while True:\n#        with open('Config.txt', 'r') as f:\n#            configData = json.load(f)\n#            rngOfFileCounts = configData['FileCountList']\n        for count in [0,1,2,3,5,6,7]:\n            outfile = open(folder+'RNN_Train_0Valid/trainModelInput_'+str(count)+'.pkl','rb')\n            data = pickle.load(outfile)\n            outfile.close()\n            print(len(data))\n#            print('--'+str(count)+'--')\n            np.random.shuffle(data)\n            yield data\n        \ngetNextFileData = nextFileData()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def genInputData1():\n    while True:\n        data = next(getNextFileData)\n        for g in data:\n            yield np.expand_dims(g[0], axis=0) ,g[1]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def genTestData(data):\n    while True:\n        for g in data:\n            yield np.expand_dims(g[0], axis=0) ,g[1]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"trainGen = genInputData1()\nvalidGen = genTestData(valid_forTrainGen)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Model"},{"metadata":{"trusted":true},"cell_type":"code","source":"model = keras.models.Sequential([\n    keras.layers.LSTM(10,return_sequences=False, input_shape=[None, input_size], recurrent_dropout =dropout_rate),\n    keras.layers.Dense(1, activation= \"sigmoid\")\n])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.summary()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.compile(loss=rnn_loss, optimizer=rnn_optimizer, metrics=[tf.keras.metrics.AUC()])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"history = model.fit(x =trainGen, epochs=rnn_epochs, steps_per_epoch= steps_per_epoch_train,\n                     validation_data = validGen, validation_steps = len(valid_forTrainGen),\n                     callbacks = [tensorboard_cb,checkpoint_cb,checkpoint_cb_best])","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat":4,"nbformat_minor":4}