|
84 | 84 | "from sklearn.model_selection import train_test_split\n", |
85 | 85 | "from sklearn.preprocessing import OneHotEncoder, LabelBinarizer\n", |
86 | 86 | "import tensorflow as tf\n", |
87 | | - "import tensorflow.keras as keras\n", |
88 | | - "import tensorflow.keras.backend as K\n", |
| 87 | + "from tensorflow import keras\n", |
| 88 | + "from keras import backend as K\n", |
89 | 89 | "import time\n", |
90 | 90 | "\n", |
91 | 91 | "\n", |
|
142 | 142 | "print(root_logdir)\n", |
143 | 143 | "print(kt_logdir) # folder for keras tuner results\n", |
144 | 144 | "print(tf_kt_logdir) # folder for TF checkpoints while keras tuning\n", |
145 | | - "print(tf_logdir) # folder for TF checkpoint for best model training" |
| 145 | + "print(tf_logdir) # folder for TF checkpoint for best model training\n", |
| 146 | + "\n", |
| 147 | + "os.makedirs(tf_logdir, exist_ok=True)" |
146 | 148 | ] |
147 | 149 | }, |
148 | 150 | { |
|
468 | 470 | "metadata": {}, |
469 | 471 | "outputs": [], |
470 | 472 | "source": [ |
471 | | - "encoder = OneHotEncoder(sparse=False)\n", |
| 473 | + "encoder = OneHotEncoder(sparse_output=False)\n", |
472 | 474 | "# we encode as one-hot for TF model\n", |
473 | 475 | "Y = encoder.fit_transform(Y.reshape(-1, 1))" |
474 | 476 | ] |
|
546 | 548 | "def build_model(hp): # with hyper parameter ranges\n", |
547 | 549 | " model = keras.Sequential()\n", |
548 | 550 | " # input layer\n", |
549 | | - " model.add(keras.Input(shape=nx))\n", |
| 551 | + " model.add(keras.Input(shape=(nx,)))\n", |
550 | 552 | " # hidden layers\n", |
551 | 553 | " for layer in range(hp.Int(\"no_layers\", 1, 5)):\n", |
552 | 554 | " model.add(\n", |
|
594 | 596 | "model = build_model(kt.HyperParameters())\n", |
595 | 597 | "hptuner = kt.RandomSearch(\n", |
596 | 598 | " hypermodel=build_model,\n", |
597 | | - " objective=\"val_categorical_accuracy\", # check performance on val data!\n", |
| 599 | + " objective=\"val_loss\", # check performance on val data!\n", |
598 | 600 | " max_trials=max_trials,\n", |
599 | 601 | " executions_per_trial=executions_per_trial,\n", |
600 | 602 | " overwrite=True,\n", |
|
653 | 655 | "# we might check (train) the best XX models in detail\n", |
654 | 656 | "# for didactical purpose we choose only the very best one, located in [0]:\n", |
655 | 657 | "model = hptuner.get_best_models(num_models=1)[0]\n", |
656 | | - "model.save(tf_logdir + \"/best_model\")" |
| 658 | + "model.save(tf_logdir + \"/best_model.keras\")" |
657 | 659 | ] |
658 | 660 | }, |
659 | 661 | { |
|
690 | 692 | "outputs": [], |
691 | 693 | "source": [ |
692 | 694 | "# load best model and reset weights\n", |
693 | | - "model = keras.models.load_model(tf_logdir + \"/best_model\")\n", |
| 695 | + "model = keras.models.load_model(tf_logdir + \"/best_model.keras\")\n", |
694 | 696 | "reset_weights(model) # start training from scratch\n", |
695 | 697 | "print(model.summary())" |
696 | 698 | ] |
|
725 | 727 | " callbacks=[earlystopping_cb, tensorboard_cb],\n", |
726 | 728 | " verbose=1,\n", |
727 | 729 | ")\n", |
728 | | - "model.save(tf_logdir + \"/trained_best_model\")\n", |
| 730 | + "model.save(tf_logdir + \"/trained_best_model.keras\")\n", |
729 | 731 | "print(model.summary())" |
730 | 732 | ] |
731 | 733 | }, |
|
849 | 851 | "name": "python", |
850 | 852 | "nbconvert_exporter": "python", |
851 | 853 | "pygments_lexer": "ipython3", |
852 | | - "version": "3.10.6" |
| 854 | + "version": "3.12.3" |
853 | 855 | } |
854 | 856 | }, |
855 | 857 | "nbformat": 4, |
|
0 commit comments