def rtrl_batch_XOR(numSamples=500,seqLen=50,delay=2): # generate data - a set of xor streams I = np.empty([seqLen,numSamples,2]) T = np.empty([seqLen,numSamples,1]) for n in range(numSamples): (tmpI,tmpT) = genData.my_xor_stream(seqLen,delay) I[:,n,:] = tmpI T[:,n,:] = tmpT # init RNN W=rtrl.allocate(2,1,5) ANN.initWeights(W) uhs.learningRate.rate = 0.000015 uhs.momentum.momentum = 0.1 uhs.momentum.paramUpdates_old = None # learn errorHist = rtrl.rtrl_batch(I,T,W,maxEpochs=3000,updateHooks=(uhs.learningRate,uhs.momentum)) # evaluate solution net = np.empty((seqLen*1,numSamples,6)) A = np.zeros((seqLen*1+1,numSamples,6)) rtrl.batch_forward(I,W,net,A,afs.sigmoid,numCycles=1) target = T[19:50,:,0] > 0.5 learned = A[20:51,:,0] > 0.5 result = np.logical_and(target,learned) accuracy = float(np.sum(result)) / float(np.prod(result.shape)) print "Accuracy: " + str(accuracy) # return activations return (I,T,A)
def rtrl_XOR(numSamples=10000,delay=2): (I,T) = genData.my_xor_stream(numSamples,delay)