Skip to content

Instantly share code, notes, and snippets.

@Orbifold
Created August 23, 2018 12:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Orbifold/6765fbc18b9691b095fa81b603e76a57 to your computer and use it in GitHub Desktop.
Save Orbifold/6765fbc18b9691b095fa81b603e76a57 to your computer and use it in GitHub Desktop.
This network learns to map a unit vector to a number corresponding to the position of the '1' in the unit vector.
from keras.layers.core import Dense
from keras.models import Sequential
from numpy import array
import numpy as np
import os
import argparse
from scipy import signal
N = 10
def create_model():
model = Sequential()
model.add(Dense(1, input_shape=(1, N)))
model.add(Dense(10))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mean_squared_error', metrics=['acc'])
return model
def create_data(n):
X = list()
y = list()
for i in range(n):
X.append(array([array(signal.unit_impulse(N, i%N))]))
y.append(array([array([i%N])]))
return array(X), array(y)
def create_test():
a = array([0, 0, 4, 5, 5, 6, 8, 4, 1, 4, 9, 8, 1, 1, 7, 9, 9, 3, 6, 7])
X = list()
y = list()
for i in a:
X.append(array([array(signal.unit_impulse(N, i%N))]))
y.append(array([array([i % N])]))
return array(X), array(y)
model = create_model()
X,y = create_data(1000)
X_test, y_test = create_test()
epochs = 200
model.fit(X, y, epochs=epochs, verbose=0)
e = model.evaluate(X_test, y_test, verbose=0)
print("%s: %.0f%%" % (model.metrics_names[1], e[1]*100))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment