some cleanup, tweaks

master
ml server 2020-01-30 21:33:21 -07:00
parent 4d23a231b0
commit 0213f93029
1 changed files with 48 additions and 185 deletions

View File

@ -21,43 +21,11 @@
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"print(\"Start\")" "from __future__ import print_function\n",
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import os\n", "import os\n",
"import datetime" "import datetime\n",
] "import numpy as np\n",
}, "import tensorflow.python.keras\n",
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import tensorflow.python.keras"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from tensorflow.python.keras import Sequential\n", "from tensorflow.python.keras import Sequential\n",
"from tensorflow.python.keras.layers import Activation, Dropout, Flatten, Dense\n", "from tensorflow.python.keras.layers import Activation, Dropout, Flatten, Dense\n",
"from tensorflow.python.keras.preprocessing.image import ImageDataGenerator\n", "from tensorflow.python.keras.preprocessing.image import ImageDataGenerator\n",
@ -66,70 +34,21 @@
"from tensorflow.python.keras.preprocessing import image\n", "from tensorflow.python.keras.preprocessing import image\n",
"from tensorflow.python.keras.models import load_model\n", "from tensorflow.python.keras.models import load_model\n",
"from tensorflow.python.keras.preprocessing.image import load_img\n", "from tensorflow.python.keras.preprocessing.image import load_img\n",
"from tensorflow.python.keras.preprocessing.image import img_to_array" "from tensorflow.python.keras.preprocessing.image import img_to_array\n",
] "from tensorflow.keras.layers import Dense, Conv2D, Flatten, Dropout, MaxPooling2D\n",
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from tensorflow.keras.layers import Dense, Conv2D, Flatten, Dropout, MaxPooling2D"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from tensorflow.python.keras.models import Model\n", "from tensorflow.python.keras.models import Model\n",
"from tensorflow.python.keras.layers import Input, concatenate" "from tensorflow.python.keras.layers import Input, concatenate\n",
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Visualization\n", "# Visualization\n",
"%matplotlib inline\n", "%matplotlib inline\n",
"import matplotlib.pyplot as plt\n", "import matplotlib.pyplot as plt\n",
"import numpy as np\n", "import numpy as np\n",
"from sklearn.decomposition import PCA" "from sklearn.decomposition import PCA\n",
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Seaborn pip dependency\n", "# Seaborn pip dependency\n",
"import seaborn as sns" "import seaborn as sns\n",
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Interact\n", "# Interact\n",
"# https://ipywidgets.readthedocs.io/en/stable/examples/Using%20Interact.html\n", "# https://ipywidgets.readthedocs.io/en/stable/examples/Using%20Interact.html\n",
"from __future__ import print_function\n",
"from ipywidgets import interact, interactive, fixed, interact_manual\n", "from ipywidgets import interact, interactive, fixed, interact_manual\n",
"import ipywidgets as widgets" "import ipywidgets as widgets\n",
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Display Images\n", "# Display Images\n",
"from IPython.display import display, Image" "from IPython.display import display, Image"
] ]
@ -140,16 +59,11 @@
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"print(\"Python import done\")" "ENCODING='GMSK'\n",
] "batch_size = 128\n",
}, "epochs = 4\n",
{ "IMG_WIDTH = 416\n",
"cell_type": "code", "IMG_HEIGHT = 803"
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"ENCODING='GMSK'"
] ]
}, },
{ {
@ -158,56 +72,17 @@
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"train_dir = os.path.join('/srv/satnogs/data/txmodes', ENCODING )\n",
"train_dir = os.path.join('/srv/satnogs/data/txmodes', ENCODING, 'train')\n", "train_dir = os.path.join('/srv/satnogs/data/txmodes', ENCODING, 'train')\n",
"val_dir = os.path.join('/srv/satnogs/data/txmodes', ENCODING, 'val')" "val_dir = os.path.join('/srv/satnogs/data/txmodes', ENCODING, 'val')\n",
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"train_good_dir = os.path.join(train_dir, 'good')\n", "train_good_dir = os.path.join(train_dir, 'good')\n",
"train_bad_dir = os.path.join(train_dir, 'bad')" "train_bad_dir = os.path.join(train_dir, 'bad')\n",
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"val_good_dir = os.path.join(val_dir, 'good')\n", "val_good_dir = os.path.join(val_dir, 'good')\n",
"val_bad_dir = os.path.join(val_dir, 'bad')" "val_bad_dir = os.path.join(val_dir, 'bad')\n",
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"num_train_good = len(os.listdir(train_good_dir))\n", "num_train_good = len(os.listdir(train_good_dir))\n",
"num_train_bad = len(os.listdir(train_bad_dir))" "num_train_bad = len(os.listdir(train_bad_dir))\n",
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"num_val_good = len(os.listdir(val_good_dir))\n", "num_val_good = len(os.listdir(val_good_dir))\n",
"num_val_bad = len(os.listdir(val_bad_dir))" "num_val_bad = len(os.listdir(val_bad_dir))\n",
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"total_train = num_train_good + num_train_bad\n", "total_train = num_train_good + num_train_bad\n",
"total_val = num_val_good + num_val_bad" "total_val = num_val_good + num_val_bad"
] ]
@ -220,39 +95,19 @@
"source": [ "source": [
"print('total training good images:', num_train_good)\n", "print('total training good images:', num_train_good)\n",
"print('total training bad images:', num_train_bad)\n", "print('total training bad images:', num_train_bad)\n",
"print(\"--\")\n", "#print(\"--\")\n",
"print(\"Total training images:\", total_train)\n", "print(\"Total training images:\", total_train)\n",
"print('total validation good images:', num_val_good)\n", "#print('total validation good images:', num_val_good)\n",
"print('total validation bad images:', num_val_bad)\n", "#print('total validation bad images:', num_val_bad)\n",
"print(\"--\")\n", "#print(\"--\")\n",
"print(\"Total validation images:\", total_val)\n", "#print(\"Total validation images:\", total_val)\n",
"print(\"Reduce training and validation set when testing\")\n", "#print(\"Reduce training and validation set when testing\")\n",
"#total_train = 100\n", "total_train = 100\n",
"#total_val = 100\n", "total_val = 100\n",
"print(\"Train =\")\n", "#print(\"Train =\")\n",
"print(total_train)\n", "#print(total_train)\n",
"print(\"Validation =\")\n", "#print(\"Validation =\")\n",
"print(total_val)" "#print(total_val)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"batch_size = 128\n",
"epochs = 16"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"IMG_WIDTH = 416\n",
"IMG_HEIGHT = 803"
] ]
}, },
{ {
@ -363,7 +218,8 @@
"log_dir = \"logs\"\n", "log_dir = \"logs\"\n",
"#log_dir=\"logs/fit/\" + datetime.datetime.now().strftime(\"%Y%m%d-%H%M%S\")\n", "#log_dir=\"logs/fit/\" + datetime.datetime.now().strftime(\"%Y%m%d-%H%M%S\")\n",
"#tensorboard_callback = tensorflow.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)\n", "#tensorboard_callback = tensorflow.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)\n",
"tensorboard_callback = tensorflow.keras.callbacks.TensorBoard(log_dir=log_dir)" "#tensorboard_callback = tensorflow.keras.callbacks.TensorBoard(log_dir=log_dir)\n",
"tensorboard_callback = tensorflow.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1, write_graph=True, write_images=True, embeddings_freq=1, update_freq='batch')"
] ]
}, },
{ {
@ -391,9 +247,14 @@
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"model.compile(optimizer='adam',\n", "#wutoptimizer = 'adam'\n",
" loss='binary_crossentropy',\n", "wutoptimizer = tensorflow.keras.optimizers.Adam(learning_rate=0.001, beta_1=0.9, beta_2=0.999, amsgrad=True)\n",
" metrics=['accuracy'])" "wutloss = 'binary_crossentropy'\n",
"#wutmetrics = 'accuracy'\n",
"wutmetrics = ['accuracy']\n",
"model.compile(optimizer=wutoptimizer,\n",
" loss=wutloss,\n",
" metrics=[wutmetrics])"
] ]
}, },
{ {
@ -429,14 +290,16 @@
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"history = model.fit_generator(\n", "history = model.fit(\n",
" train_data_gen,\n", " train_data_gen,\n",
" steps_per_epoch=total_train // batch_size,\n", " steps_per_epoch=total_train // batch_size,\n",
" epochs=epochs,\n", " epochs=epochs,\n",
" verbose=1,\n",
" callbacks=[tensorboard_callback],\n",
" validation_data=val_data_gen,\n", " validation_data=val_data_gen,\n",
" validation_steps=total_val // batch_size,\n", " validation_steps=total_val // batch_size,\n",
" callbacks=[tensorboard_callback],\n", " shuffle=True,\n",
" verbose=1\n", " use_multiprocessing=False\n",
")" ")"
] ]
}, },