diff --git a/.gitignore b/.gitignore
index abb4b76..714f57d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,5 +31,8 @@ clean
**__pycache__
-# Exlude buckets from AWS S3
-images
\ No newline at end of file
+# Datasets
+data
+
+# Models
+**.h5
\ No newline at end of file
diff --git a/research/01_radialImageProcessing/README.org b/research/01_radialImageProcessing/README.org
index 83a9db3..3ec102a 100644
--- a/research/01_radialImageProcessing/README.org
+++ b/research/01_radialImageProcessing/README.org
@@ -1,10 +1,7 @@
-#+latex_header: \usepackage{../research}
-#+bind: org-latex-minted-options (("bgcolor" "code"))
-#+bind: org-latex-default-figure-position "H"
-#+bind: org-latex-image-default-width "\\linewidth"
-#+property: header-args :eval no-export :exports both
+#+setupfile: ../research.org
#+title: Radial Image Processing
+#+author: Lewis Collum
#+date: Updated: \today
*Started 12/17/2019*
diff --git a/research/01_radialImageProcessing/README.pdf b/research/01_radialImageProcessing/README.pdf
index e4b888e..5b6f746 100644
Binary files a/research/01_radialImageProcessing/README.pdf and b/research/01_radialImageProcessing/README.pdf differ
diff --git a/research/02_kerasIntroduction/.python-version b/research/02_TrafficSignClassification/.python-version
similarity index 100%
rename from research/02_kerasIntroduction/.python-version
rename to research/02_TrafficSignClassification/.python-version
diff --git a/research/02_kerasIntroduction/README.org b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/README.org
similarity index 50%
rename from research/02_kerasIntroduction/README.org
rename to research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/README.org
index e70bae2..4e21f98 100644
--- a/research/02_kerasIntroduction/README.org
+++ b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/README.org
@@ -1,70 +1,62 @@
-#+latex_header: \usepackage{../research}
-#+bind: org-latex-minted-options (("bgcolor" "code"))
-#+bind: org-latex-default-figure-position "H"
-#+bind: org-latex-image-default-width "\\linewidth"
-#+property: header-args :eval no-export :exports both :dir source
+#+setupfile: ../../research.org
-#+title: Sign Detection
+#+title: Common Objects Image Recognition
+#+author: Lewis Collum
#+date: Updated: \today
*Started 1/28/2020*
-** Keras Demo
-*** Pyenv
- As of now, Tensorflow requires python 3.7, and the current python
- version is 3.8. To provide python 3.7 to this project only, I used
- =pyenv= (https://github.com/pyenv/pyenv). Since I'm using Arch
- Linux, I used =pacman= to install pyenv, ~sudo pacman -S
- pyenv~. Then I added the following lines to my bash_profile:
+* Pyenv
+ As of now, Tensorflow requires python 3.7, and the current python
+ version is 3.8. To provide python 3.7 to this project only, I used
+ =pyenv= (https://github.com/pyenv/pyenv). Since I'm using Arch
+ Linux, I used =pacman= to install pyenv, ~sudo pacman -S
+ pyenv~. Then I added the following lines to my bash_profile:
- #+begin_src bash
+ #+begin_src bash
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi
- #+end_src
-
- Then I restarted my shell and went to my project directory and ran
- ~pyenv local 3.7.6~. Finally, to install python 3.7.6: ~pyenv install 3.7.6~.
-
- In this directory I installed packages, via pip, for this
- version. For example, ~sudo pip install matplotlib~. Refer to the
- github link above for more information.
-
-*** Emacs Pyenv Mode
- Emacs has the =pyenv-mode-auto= package which, when installed,
- will automatically detect the project's python version (via the
- .python-version file generated with ~pyenv local 3.7.6~
- above). This means that we can run org-mode python code blocks
- will use the python version detected, instead of the system python
- version (which is currently python 3.8).
-*** Data Preperation
-**** Downloading Images from AWS S3 Bucket
- #+begin_src bash :async :exports code :dir ""
-if [[ ! -d "images" ]]; then
+ #+end_src
+
+ Then I restarted my shell and went to my project directory and ran
+ ~pyenv local 3.7.6~. Finally, to install python 3.7.6: ~pyenv install 3.7.6~.
+
+ In this directory I installed packages, via pip, for this
+ version. For example, ~sudo pip install matplotlib~. Refer to the
+ github link above for more information.
+
+* Emacs Pyenv Mode
+ Emacs has the =pyenv-mode-auto= package which, when installed,
+ will automatically detect the project's python version (via the
+ .python-version file generated with ~pyenv local 3.7.6~
+ above). This means that we can run org-mode python code blocks
+ will use the python version detected, instead of the system python
+ version (which is currently python 3.8).
+* Downloading Images from AWS S3 Bucket
+ #+begin_src bash
+if [[ ! -d "data" ]]; then
wget https://s3.us-east-2.amazonaws.com/naturalimages02/images.tar.gz
tar -xzf images.tar.gz
rm -f images.tar.gz*
fi;
echo "DONE!"
- #+end_src
+ #+end_src
- #+RESULTS:
- : DONE!
-
-**** Common Variables
- =common.py=
- #+begin_src python :tangle source/common.py
-trainPath = '../images/train/'
-testPath = '../images/test/'
+* Common Variables
+ =common.py=
+ #+begin_src python :tangle source/common.py
+trainPath = '../data/train/'
+testPath = '../data/test/'
classCount = 8
imageSize = 224
- #+end_src
+ #+end_src
-**** Preparing Training Data
- =batch.py=
- #+begin_src python :results silent :tangle source/batch.py
+* Preparing Training Data
+ =batch.py=
+ #+begin_src python :tangle source/batch.py
from keras.preprocessing.image import ImageDataGenerator
import numpy as np
import common
@@ -87,10 +79,10 @@ trainingBatchIterator = trainingBatchGenerator.flow_from_directory(
x, y = trainingBatchIterator.next()
sampleSize = trainingBatchIterator.n
- #+end_src
+ #+end_src
-**** Let's See the Batch
- #+begin_src python :results file :var figureFile="../figure/generatedTrainingImages.png"
+* Let's See the Batch
+ #+begin_src python :results silent
import matplotlib.pyplot as pyplot
import numpy
@@ -104,18 +96,17 @@ for i in range(1, columns*rows+1):
randomImageIndex = numpy.random.randint(batch.size)
randomImage = batch.x[randomImageIndex].astype(numpy.int)
figure.add_subplot(rows, columns, i)
+ pyplot.axis('off')
pyplot.imshow(randomImage)
-pyplot.savefig(figureFile)
-return figureFile
- #+end_src
+pyplot.savefig("../figure/generatedTrainingImages.png")
+ #+end_src
- #+RESULTS:
- [[file:figure/generatedTrainingImages.png]]
+ [[./figure/generatedTrainingImages.png]]
-**** Model Creation from VGG16
- =model.py=
- #+begin_src python :results output :async :tangle source/model.py
+* Model Creation from VGG16
+ =model.py=
+ #+begin_src python :tangle source/model.py
import keras
from keras.models import Model, load_model
from keras.layers import Activation, Dropout, Flatten, Dense
@@ -142,10 +133,10 @@ model.add(Dense(common.classCount, activation='softmax'))
if __name__ == '__main__':
print(model.summary())
- #+end_src
+ #+end_src
- #+RESULTS:
- #+begin_example
+ #+RESULTS:
+ #+begin_example
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
@@ -165,11 +156,11 @@ if __name__ == '__main__':
Non-trainable params: 14,714,688
_________________________________________________________________
None
- #+end_example
+ #+end_example
-**** Training
- =training.py=
- #+begin_src python :tangle source/training.py :async
+* Training
+ =training.py=
+ #+begin_src python :tangle source/training.py
from keras.optimizers import SGD
import batch
@@ -180,34 +171,65 @@ model.compile(
optimizer = SGD(lr=1e-3),
metrics = ['accuracy'])
-# # Start the training process
-# model.fit(x_train, y_train, validation_split=0.30, size=32, epochs=50, verbose=2)
-
-# # #save the model
-# model.save('catdog.h5')
-
-history = model.fit_generator(
+model.fit_generator(
batch.trainingBatchIterator,
steps_per_epoch = batch.sampleSize/batch.size,
- epochs = 10)
+ epochs = 2)
model.save('fine_tune.h5')
- #+end_src
+ #+end_src
- #+RESULTS:
- : 723bc9aae56987359e8608626ea62441
+* Testing Our Model
+ #+begin_src python :tangle source/testing.py
+import keras
+from keras.models import load_model
+from keras.preprocessing.image import ImageDataGenerator
-**** Summarize History
- #+begin_src python
import matplotlib.pyplot as pyplot
-import training
+import numpy as np
+import common
+
+model = load_model('fine_tune.h5')
+
+test_datagen = ImageDataGenerator()
+
+test_generator = test_datagen.flow_from_directory(
+ directory=common.testPath,
+ target_size=(common.imageSize, common.imageSize),
+ color_mode='rgb',
+ shuffle=False,
+ class_mode='categorical',
+ batch_size=1)
+
+filenames = test_generator.filenames
+nb_samples = len(filenames)
+
+fig=pyplot.figure()
+columns = 4
+rows = 4
+for i in range(1, columns*rows):
+ x_batch, y_batch = test_generator.next()
+
+ name = model.predict(x_batch)
+ name = np.argmax(name, axis=-1)
+ true_name = y_batch
+ true_name = np.argmax(true_name, axis=-1)
+
+ label_map = (test_generator.class_indices)
+ label_map = dict((v,k) for k,v in label_map.items()) #flip k,v
+ predictions = [label_map[k] for k in name]
+ true_value = [label_map[k] for k in true_name]
+
+ image = x_batch[0].astype(np.int)
+ fig.add_subplot(rows, columns, i)
+ pyplot.axis('off')
+ pyplot.title(f"guess: {predictions[0]}\nactual: {true_value[0]}")
+ pyplot.imshow(image)
-pyplot.plot(training.history.history['loss'])
-pyplot.title('loss')
-pyplot.ylabel('loss')
-pyplot.xlabel('epoch')
-pyplot.legend(['loss'], loc='upper left')
pyplot.show()
- #+end_src
+ #+end_src
+
+ [[./figure/testSetPredictions.png]]
- #+RESULTS:
+* Reference
+ - https://www.guru99.com/keras-tutorial.html
diff --git a/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/README.pdf b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/README.pdf
new file mode 100644
index 0000000..0f7d022
Binary files /dev/null and b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/README.pdf differ
diff --git a/research/02_kerasIntroduction/data.csv b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/data.csv
similarity index 100%
rename from research/02_kerasIntroduction/data.csv
rename to research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/data.csv
diff --git a/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/figure/generatedTrainingImages.png b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/figure/generatedTrainingImages.png
new file mode 100644
index 0000000..aa7d0a1
Binary files /dev/null and b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/figure/generatedTrainingImages.png differ
diff --git a/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/figure/testSetPredictions.png b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/figure/testSetPredictions.png
new file mode 100644
index 0000000..fcbc401
Binary files /dev/null and b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/figure/testSetPredictions.png differ
diff --git a/research/02_kerasIntroduction/source/batch.py b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/batch.py
similarity index 100%
rename from research/02_kerasIntroduction/source/batch.py
rename to research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/batch.py
diff --git a/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/common.py b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/common.py
new file mode 100644
index 0000000..402adb7
--- /dev/null
+++ b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/common.py
@@ -0,0 +1,4 @@
+trainPath = '../data/train/'
+testPath = '../data/test/'
+classCount = 8
+imageSize = 224
diff --git a/research/02_kerasIntroduction/source/model.py b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/model.py
similarity index 100%
rename from research/02_kerasIntroduction/source/model.py
rename to research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/model.py
diff --git a/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/testing.py b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/testing.py
new file mode 100644
index 0000000..91a8573
--- /dev/null
+++ b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/testing.py
@@ -0,0 +1,46 @@
+import keras
+from keras.models import load_model
+from keras.preprocessing.image import ImageDataGenerator
+
+import matplotlib.pyplot as pyplot
+import numpy as np
+import common
+
+model = load_model('fine_tune.h5')
+
+test_datagen = ImageDataGenerator()
+
+test_generator = test_datagen.flow_from_directory(
+ directory=common.testPath,
+ target_size=(common.imageSize, common.imageSize),
+ color_mode='rgb',
+ shuffle=False,
+ class_mode='categorical',
+ batch_size=1)
+
+filenames = test_generator.filenames
+nb_samples = len(filenames)
+
+fig=pyplot.figure()
+columns = 4
+rows = 4
+for i in range(1, columns*rows):
+ x_batch, y_batch = test_generator.next()
+
+ name = model.predict(x_batch)
+ name = np.argmax(name, axis=-1)
+ true_name = y_batch
+ true_name = np.argmax(true_name, axis=-1)
+
+ label_map = (test_generator.class_indices)
+ label_map = dict((v,k) for k,v in label_map.items()) #flip k,v
+ predictions = [label_map[k] for k in name]
+ true_value = [label_map[k] for k in true_name]
+
+ image = x_batch[0].astype(np.int)
+ fig.add_subplot(rows, columns, i)
+ pyplot.axis('off')
+ pyplot.title(f"guess: {predictions[0]}\nactual: {true_value[0]}")
+ pyplot.imshow(image)
+
+pyplot.show()
diff --git a/research/02_kerasIntroduction/source/training.py b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/training.py
similarity index 59%
rename from research/02_kerasIntroduction/source/training.py
rename to research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/training.py
index c2def5e..1b253f2 100644
--- a/research/02_kerasIntroduction/source/training.py
+++ b/research/02_TrafficSignClassification/01_SimpleObjectClassifierKerasVGG16/source/training.py
@@ -8,15 +8,9 @@
optimizer = SGD(lr=1e-3),
metrics = ['accuracy'])
-# # Start the training process
-# model.fit(x_train, y_train, validation_split=0.30, size=32, epochs=50, verbose=2)
-
-# # #save the model
-# model.save('catdog.h5')
-
-history = model.fit_generator(
+model.fit_generator(
batch.trainingBatchIterator,
steps_per_epoch = batch.sampleSize/batch.size,
- epochs = 10)
+ epochs = 2)
model.save('fine_tune.h5')
diff --git a/research/02_TrafficSignClassification/02_CarNDTrafficSignClassifier/README.org b/research/02_TrafficSignClassification/02_CarNDTrafficSignClassifier/README.org
new file mode 100644
index 0000000..32d89d0
--- /dev/null
+++ b/research/02_TrafficSignClassification/02_CarNDTrafficSignClassifier/README.org
@@ -0,0 +1,41 @@
+#+setupfile: ../../research.org
+
+#+title: Traffic Sign Classification
+#+date: Updated: \today
+#+author: Lewis Collum
+*Started 02/09/2020*
+
+* Downloading German Traffic Sign Recognition Benchmark GTSRB
+ #+begin_src bash
+dataset=GTSRB-Training_fixed.zip
+
+if [[ ! -d "data" ]]; then
+ wget https://sid.erda.dk/public/archives/daaeac0d7ce1152aea9b61d9f1e19370/$dataset
+ unzip $dataset -d "data"
+ rm -f $dataset
+fi;
+
+if [[ -d "data/GTSRB/Training" ]]; then
+ mv "data/GTSRB/Training/" "data/train"
+ rm -rf "data/GTSRB"
+ mv "data/train/Readme.txt" "data/README_GTSRB"
+fi;
+
+echo "DONE!"
+ #+end_src
+
+* Load the Data
+ =common.py=
+ #+begin_src python :tangle source_signs/common.py
+trainPath = "../image/train"
+
+ #+end_src
+* Resources
+ \scriptsize
+ - Tutorial
+ - https://towardsdatascience.com/recognizing-traffic-signs-with-over-98-accuracy-using-deep-learning-86737aedc2ab
+ - https://github.com/kenshiro-o/CarND-Traffic-Sign-Classifier-Project
+ - https://github.com/kenshiro-o/CarND-Traffic-Sign-Classifier-Project/blob/master/Traffic_Sign_Classifier.ipynb
+ - Dataset
+ - https://sid.erda.dk/public/archives/daaeac0d7ce1152aea9b61d9f1e19370/published-archive.html
+ - http://benchmark.ini.rub.de/?section=gtsrb&subsection=dataset
diff --git a/research/02_TrafficSignClassification/02_CarNDTrafficSignClassifier/README.pdf b/research/02_TrafficSignClassification/02_CarNDTrafficSignClassifier/README.pdf
new file mode 100644
index 0000000..3d82609
Binary files /dev/null and b/research/02_TrafficSignClassification/02_CarNDTrafficSignClassifier/README.pdf differ
diff --git a/research/02_kerasIntroduction/README.html b/research/02_kerasIntroduction/README.html
deleted file mode 100644
index c17c2d3..0000000
--- a/research/02_kerasIntroduction/README.html
+++ /dev/null
@@ -1,525 +0,0 @@
-
-
-
-
-
-
-
-Sign Detection
-
-
-
-
-
-
-
Sign Detection
-
-Started 1/28/2020
-
-
-
-
Keras Demo
-
-
-
-
Pyenv
-
-
-As of now, Tensorflow requires python 3.7, and the current python
-version is 3.8. To provide python 3.7 to this project only, I used
-pyenv
(https://github.com/pyenv/pyenv). Since I'm using Arch
-Linux, I used pacman
to install pyenv, sudo pacman -S
- pyenv
. Then I added the following lines to my bash_profile:
-
-
-
-
export PYENV_ROOT="$HOME/.pyenv"
-export PATH="$PYENV_ROOT/bin:$PATH"
-
-if command -v pyenv 1>/dev/null 2>&1; then
- eval "$(pyenv init -)"
-fi
-
-
-
-
-Then I restarted my shell and went to my project directory and ran
-pyenv local 3.7.6
. Finally, to install python 3.7.6: pyenv install 3.7.6
.
-
-
-
-In this directory I installed packages, via pip, for this
-version. For example, sudo pip install matplotlib
. Refer to the
-github link above for more information.
-
-
-
-
-
-
Emacs Pyenv Mode
-
-
-Emacs has the pyenv-mode-auto
package which, when installed,
-will automatically detect the project's python version (via the
-.python-version file generated with pyenv local 3.7.6
-above). This means that we can run org-mode python code blocks
-will use the python version detected, instead of the system python
-version (which is currently python 3.8).
-
-
-
-
-
Data Preperation
-
-
-
-
Downloading Images from AWS S3 Bucket
-
-
-
if [[ ! -d "images" ]]; then
- wget https://s3.us-east-2.amazonaws.com/naturalimages02/images.tar.gz
- tar -xzf images.tar.gz
- rm -f images.tar.gz*
-fi;
-echo "DONE!"
-
-
-
-
-
-
-
Common Variables
-
-
-common.py
-
-
-
trainPath = '../images/train/'
-testPath = '../images/test/'
-classCount = 8
-imageSize = 224
-
-
-
-
-
-
-
Preparing Training Data
-
-
-batch.py
-
-
-
from keras.preprocessing.image import ImageDataGenerator
-import numpy as np
-import common
-
-size = 16
-
-trainingBatchGenerator = ImageDataGenerator(
- validation_split = 0.3,
- shear_range = 0.2,
- zoom_range = 0.2,
- horizontal_flip = True)
-
-trainingBatchIterator = trainingBatchGenerator.flow_from_directory(
- directory = common.trainPath,
- target_size = (common.imageSize, common.imageSize),
- batch_size = size,
- class_mode = 'categorical',
- color_mode = 'rgb',
- shuffle = True)
-
-x, y = trainingBatchIterator.next()
-sampleSize = trainingBatchIterator.n
-
-
-
-
-
-
-
Let's See the Batch
-
-
-
import matplotlib.pyplot as pyplot
-import numpy
-
-import batch
-
-figure = pyplot.figure()
-columns = 4
-rows = 4
-
-for i in range(1, columns*rows+1):
- randomImageIndex = numpy.random.randint(batch.size)
- randomImage = batch.x[randomImageIndex].astype(numpy.int)
- figure.add_subplot(rows, columns, i)
- pyplot.imshow(randomImage)
-
-pyplot.savefig(figureFile)
-return figureFile
-
-
-
-
-
-
-
-
-
-
Model Creation from VGG16
-
-
-model.py
-
-
-
import keras
-from keras.models import Model, load_model
-from keras.layers import Activation, Dropout, Flatten, Dense
-from keras.preprocessing.image import ImageDataGenerator
-from keras.applications.vgg16 import VGG16
-
-import common
-
-baseModel = VGG16(
- weights = 'imagenet',
- include_top = False,
- input_shape = (common.imageSize, common.imageSize, 3))
-
-for layer in baseModel.layers:
- layer.trainable = False
-
-model = keras.models.Sequential()
-model.add(baseModel)
-
-model.add(Flatten())
-model.add(Dense(1024, activation='relu'))
-model.add(Dense(1024, activation='relu'))
-model.add(Dense(common.classCount, activation='softmax'))
-
-if __name__ == '__main__':
- print(model.summary())
-
-
-
-
- Model: "sequential_1"
- _________________________________________________________________
- Layer (type) Output Shape Param #
- =================================================================
- vgg16 (Model) (None, 7, 7, 512) 14714688
- _________________________________________________________________
- flatten_1 (Flatten) (None, 25088) 0
- _________________________________________________________________
- dense_1 (Dense) (None, 1024) 25691136
- _________________________________________________________________
- dense_2 (Dense) (None, 1024) 1049600
- _________________________________________________________________
- dense_3 (Dense) (None, 8) 8200
- =================================================================
- Total params: 41,463,624
- Trainable params: 26,748,936
- Non-trainable params: 14,714,688
- _________________________________________________________________
- None
-
-
-
-
-
-
Training
-
-
-training.py
-
-
-
from keras.optimizers import SGD
-
-import batch
-from model import model
-
-model.compile(
- loss = 'categorical_crossentropy',
- optimizer = SGD(lr=1e-3),
- metrics = ['accuracy'])
-
-# # Start the training process
-# model.fit(x_train, y_train, validation_split=0.30, size=32, epochs=50, verbose=2)
-
-# # #save the model
-# model.save('catdog.h5')
-
-history = model.fit_generator(
- batch.trainingBatchIterator,
- steps_per_epoch = batch.sampleSize/batch.size,
- epochs = 10)
-
-model.save('fine_tune.h5')
-
-
-
-
-723bc9aae56987359e8608626ea62441
-
-
-
-
-
-
Summarize History
-
-
-
import matplotlib.pyplot as pyplot
-import training
-
-pyplot.plot(training.history.history['loss'])
-pyplot.title('loss')
-pyplot.ylabel('loss')
-pyplot.xlabel('epoch')
-pyplot.legend(['loss'], loc='upper left')
-pyplot.show()
-
-
-
-
-
-
-
-
-
Date: Updated: \today
-
Created: 2020-01-29 Wed 11:57
-
Validate
-
-
-
diff --git a/research/02_kerasIntroduction/README.pdf b/research/02_kerasIntroduction/README.pdf
deleted file mode 100644
index 6bf982f..0000000
Binary files a/research/02_kerasIntroduction/README.pdf and /dev/null differ
diff --git a/research/02_kerasIntroduction/figure/generatedTrainingImages.png b/research/02_kerasIntroduction/figure/generatedTrainingImages.png
deleted file mode 100644
index d90bd0b..0000000
Binary files a/research/02_kerasIntroduction/figure/generatedTrainingImages.png and /dev/null differ
diff --git a/research/02_kerasIntroduction/source/common.py b/research/02_kerasIntroduction/source/common.py
deleted file mode 100644
index fb78ed1..0000000
--- a/research/02_kerasIntroduction/source/common.py
+++ /dev/null
@@ -1,4 +0,0 @@
-trainPath = '../images/train/'
-testPath = '../images/test/'
-classCount = 8
-imageSize = 224
diff --git a/research/research.org b/research/research.org
new file mode 100644
index 0000000..63abc39
--- /dev/null
+++ b/research/research.org
@@ -0,0 +1,7 @@
+#+latex_header: \usepackage{$HOME/frostAV/research/research}
+#+bind: org-latex-minted-options (("bgcolor" "code"))
+#+bind: org-latex-default-figure-position "H"
+#+bind: org-latex-image-default-width "\\linewidth"
+#+property: header-args :eval no-export :async
+#+property: header-args:bash :exports code :results silent
+#+property: header-args:python :dir source :exports both :results output