conv2d implementation

This commit is contained in:
Francesco Gatti
2017-06-28 14:04:43 +00:00
parent 8bf0b0257e
commit 3cb126420c
6 changed files with 199 additions and 34 deletions
+18 -17
View File
@@ -2,7 +2,7 @@ import keras
import numpy as np
import pickle
from keras.models import Sequential
from keras.layers import Input, Dense, Activation, Flatten, Dropout, ELU
from keras.layers import Input, Dense, Activation, Flatten, Dropout, ELU, Reshape
from keras.layers.convolutional import Convolution2D, Convolution3D
from keras.layers.pooling import MaxPooling2D, MaxPooling3D
from keras.models import Sequential, Model
@@ -12,33 +12,34 @@ from weights_exporter import *
def dense_model():
model = Sequential()
model.add(Dense(256, input_shape=(1, 512)))
model.add(Reshape((10, 10, 1), input_shape=(10, 10)))
model.add(Convolution2D(2, (4, 4), subsample=(2, 2),
bias_initializer='random_uniform'))
model.add(ELU())
model.add(Dense(32))
model.add(ELU())
model.add(Dense(2))
model.add(Convolution2D(4, (2, 2), subsample=(1, 1),
bias_initializer='random_uniform', activation="relu"))
sgd = keras.optimizers.Adam(lr=1e-4, decay=1e-8)
model.compile(optimizer=sgd, loss="mse")
return model
if __name__ == '__main__':
print "DATA FORMAT: ", keras.backend.image_data_format()
model = dense_model()
wg = model.get_weights()
export_conv2d("conv0", wg[0], wg[1])
export_conv2d("conv1", wg[2], wg[3])
export_dense("dense0", wg[0], wg[1])
export_dense("dense1", wg[2], wg[3])
export_dense("dense2", wg[4], wg[5])
model.set_weights(wg)
X = np.random.rand(1, 512)
i = np.array(X, dtype=np.float32)
grid = np.random.rand(10,10)
X = grid[None,:,:]
i = np.array(grid.flatten(), dtype=np.float32)
print i
i.tofile("input.bin", format="f")
print "Input: ", X
print "Input: ", i
r = model.predict( X[None, :], batch_size=1)
r = model.predict( X, batch_size=1)
print np.shape(r)
print "Result: ", r
print "Result shape: ", np.shape(r)