Skip to content

Commit 7efd089

Browse files
author
Ubuntu
committed
Merge branch 'master' of https://github.com/lukas/ml-class
2 parents 6dcbccf + 2f05d49 commit 7efd089

25 files changed

+10093
-4
lines changed

keras-cnn/cnn.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,4 @@
4343

4444
model.fit(X_train, y_train, validation_data=(X_test, y_test),
4545
epochs=config.epochs,
46-
callbacks=[WandbCallback(validation_data=X_test, labels=labels)])
46+
callbacks=[WandbCallback()])

keras-cnn/conv-demo.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
from scipy.signal import convolve2d
44

55

6-
kernel = [[0.0,-1.0,0.0],
7-
[-1.0,4.0,-1.0],
6+
kernel = [[0.0,1.0,0.0],
7+
[0.0,0.5,0.0],
88
[0.0,-1.0,0.0]]
99

1010
backgroundColor = (0,)*3

keras-fashion/wandb/settings

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
[default]
2-
entity: trainai
2+
entity: lukeab-m27
33
project: fashion
44
base_url: https://api.wandb.ai

videos/autoencoder/autoencoder.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
from keras.layers import Input, Dense, Flatten, Reshape
2+
from keras.models import Model, Sequential
3+
4+
from keras.datasets import mnist
5+
from keras.callbacks import Callback
6+
import numpy as np
7+
import wandb
8+
from wandb.keras import WandbCallback
9+
10+
run = wandb.init()
11+
config = run.config
12+
13+
config.encoding_dim = 32
14+
config.epochs = 10
15+
16+
(x_train, _), (x_test, _) = mnist.load_data()
17+
18+
x_train = x_train.astype('float32') / 255.
19+
x_test = x_test.astype('float32') / 255.
20+
21+
model = Sequential()
22+
model.add(Flatten(input_shape=(28,28)))
23+
model.add(Dense(config.encoding_dim, activation='relu'))
24+
model.add(Dense(28*28, activation='sigmoid'))
25+
model.add(Reshape((28,28)))
26+
model.compile(optimizer='adam', loss='mse')
27+
28+
# For visualization
29+
class Images(Callback):
30+
def on_epoch_end(self, epoch, logs):
31+
indices = np.random.randint(self.validation_data[0].shape[0], size=8)
32+
test_data = self.validation_data[0][indices]
33+
pred_data = self.model.predict(test_data)
34+
run.history.row.update({
35+
"examples": [
36+
wandb.Image(np.hstack([data, pred_data[i]]), caption=str(i))
37+
for i, data in enumerate(test_data)]
38+
})
39+
40+
model.fit(x_train, x_train,
41+
epochs=config.epochs,
42+
validation_data=(x_test, x_test),
43+
callbacks=[Images(), WandbCallback()])
44+
45+
46+
model.save('auto.h5')
47+
48+

videos/autoencoder/autoencoder_cnn.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
from keras.layers import Input, Dense, Flatten, Reshape, Conv2D, UpSampling2D, MaxPooling2D
2+
from keras.models import Model, Sequential
3+
from keras.datasets import mnist
4+
from keras.callbacks import Callback
5+
6+
import numpy as np
7+
import wandb
8+
from wandb.keras import WandbCallback
9+
10+
run = wandb.init()
11+
config = run.config
12+
13+
config.epochs = 100
14+
15+
(x_train, _), (x_test, _) = mnist.load_data()
16+
17+
x_train = x_train.astype('float32') / 255.
18+
x_test = x_test.astype('float32') / 255.
19+
20+
model = Sequential()
21+
model.add(Reshape((28,28,1), input_shape=(28,28)))
22+
model.add(Conv2D(32, (3, 3), activation='relu', padding='same'))
23+
model.add(MaxPooling2D(2,2))
24+
model.add(Conv2D(32, (3, 3), activation='relu', padding='same'))
25+
model.add(UpSampling2D((2, 2)))
26+
model.add(Conv2D(1, (3, 3), activation='relu', padding='same'))
27+
model.add(Reshape((28,28)))
28+
29+
model.compile(optimizer='adam', loss='mse')
30+
31+
model.summary()
32+
33+
class Images(Callback):
34+
def on_epoch_end(self, epoch, logs):
35+
indices = np.random.randint(self.validation_data[0].shape[0], size=8)
36+
test_data = self.validation_data[0][indices]
37+
pred_data = self.model.predict(test_data)
38+
run.history.row.update({
39+
"examples": [
40+
wandb.Image(np.hstack([data, pred_data[i]]), caption=str(i))
41+
for i, data in enumerate(test_data)]
42+
})
43+
44+
model.fit(x_train, x_train,
45+
epochs=config.epochs,
46+
validation_data=(x_test, x_test),
47+
callbacks=[Images(), WandbCallback()])
48+
49+
50+
model.save('auto-cnn.h5')
51+
52+
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
from keras.layers import Input, Dense, Flatten, Reshape
2+
from keras.models import Model, Sequential
3+
from keras.callbacks import Callback
4+
from keras.datasets import mnist
5+
import numpy as np
6+
import wandb
7+
from wandb.keras import WandbCallback
8+
9+
def add_noise(x_train, x_test):
10+
# Add some random noise to an image
11+
12+
noise_factor = 0.5
13+
x_train_noisy = x_train + noise_factor * np.random.normal(loc=0.0, scale=1.0, size=x_train.shape)
14+
x_test_noisy = x_test + noise_factor * np.random.normal(loc=0.0, scale=1.0, size=x_test.shape)
15+
16+
x_train_noisy = np.clip(x_train_noisy, 0., 1.)
17+
x_test_noisy = np.clip(x_test_noisy, 0., 1.)
18+
return x_train_noisy, x_test_noisy
19+
20+
run = wandb.init()
21+
config = run.config
22+
23+
config.encoding_dim = 32
24+
config.epochs = 10
25+
26+
(x_train, _), (x_test, _) = mnist.load_data()
27+
(x_train_noisy, x_test_noisy) = add_noise(x_train, x_test)
28+
29+
x_train = x_train.astype('float32') / 255.
30+
x_test = x_test.astype('float32') / 255.
31+
32+
model = Sequential()
33+
model.add(Flatten(input_shape=(28,28)))
34+
model.add(Dense(config.encoding_dim, activation='relu'))
35+
model.add(Dense(784, activation='sigmoid'))
36+
model.add(Reshape((28,28)))
37+
model.compile(optimizer='adam', loss='mse')
38+
39+
#for visualization
40+
class Images(Callback):
41+
def on_epoch_end(self, epoch, logs):
42+
indices = np.random.randint(self.validation_data[0].shape[0], size=8)
43+
test_data = self.validation_data[0][indices]
44+
pred_data = self.model.predict(test_data)
45+
run.history.row.update({
46+
"examples": [
47+
wandb.Image(np.hstack([data, pred_data[i]]), caption=str(i))
48+
for i, data in enumerate(test_data)]
49+
})
50+
51+
52+
model.fit(x_train_noisy, x_train,
53+
epochs=config.epochs,
54+
validation_data=(x_test_noisy, x_test), callbacks=[Images(), WandbCallback()])
55+
56+
57+
model.save("auto-denoise.h5")
58+
59+
60+
61+

videos/autoencoder/run_autoencoder.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
from keras.models import Model
2+
from keras.models import load_model
3+
4+
from keras.datasets import mnist
5+
import numpy as np
6+
import cv2
7+
8+
(x_train, _), (x_test, _) = mnist.load_data()
9+
10+
model = load_model('auto.h5')
11+
12+
def add_noise(x_train):
13+
noise_factor = 0.5
14+
x_train_noisy = x_train + noise_factor * np.random.normal(loc=0.0, scale=1.0, size=x_train.shape)
15+
16+
x_train_noisy = np.clip(x_train_noisy, 0., 1.)
17+
return x_train_noisy
18+
19+
i = 0
20+
while(True):
21+
22+
k = cv2.waitKey(0)
23+
if k == 27: # wait for ESC key to exit
24+
cv2.destroyAllWindows()
25+
break
26+
27+
input_img = x_test[i]
28+
29+
if k == 32: # space bar
30+
pass
31+
#input_img = add_noise(input_img)
32+
33+
output_img = model.predict(input_img.reshape(1,28,28))[0].reshape(28,28,1)
34+
cv2.imshow('input', input_img)
35+
cv2.imshow('output', output_img)
36+
i+=1
37+
38+
39+
40+

videos/cnn/cnn.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
from keras.datasets import mnist
2+
from keras.models import Sequential
3+
from keras.layers import Conv2D, MaxPooling2D, Dropout, Dense, Flatten
4+
from keras.utils import np_utils
5+
from wandb.keras import WandbCallback
6+
import wandb
7+
8+
run = wandb.init()
9+
config = run.config
10+
config.img_width = 28
11+
config.img_height = 28
12+
config.first_layer_conv_width = 3
13+
config.first_layer_conv_height = 3
14+
config.dense_layer_size = 100
15+
config.epochs = 10
16+
17+
(X_train, y_train), (X_test, y_test) = mnist.load_data()
18+
19+
X_train = X_train.astype('float32')
20+
X_train /= 255.
21+
X_test = X_test.astype('float32')
22+
X_test /= 255.
23+
24+
#reshape input data
25+
X_train = X_train.reshape(X_train.shape[0], config.img_width, config.img_height, 1)
26+
X_test = X_test.reshape(X_test.shape[0], config.img_width, config.img_height, 1)
27+
28+
# one hot encode outputs
29+
y_train = np_utils.to_categorical(y_train)
30+
y_test = np_utils.to_categorical(y_test)
31+
num_classes = y_test.shape[1]
32+
labels=range(10)
33+
34+
# build model
35+
model = Sequential()
36+
model.add(Conv2D(32,
37+
(config.first_layer_conv_width, config.first_layer_conv_height),
38+
input_shape=(28, 28,1),
39+
activation='relu'))
40+
model.add(MaxPooling2D(pool_size=(2, 2)))
41+
model.add(Flatten())
42+
model.add(Dense(config.dense_layer_size, activation='relu'))
43+
model.add(Dense(num_classes, activation='softmax'))
44+
45+
model.compile(loss='categorical_crossentropy', optimizer='adam',
46+
metrics=['accuracy'])
47+
48+
model.summary()
49+
50+
model.fit(X_train, y_train, validation_data=(X_test, y_test),
51+
epochs=config.epochs,
52+
callbacks=[WandbCallback(data_type="image")])

0 commit comments

Comments
 (0)