xmoid3 = lambda x: x * x * x * (1.0 / 6.0) xmoidp3 = lambda x: 3 * x * x * (1.0 / 6.0) xmoidpp3 = lambda x: 6 * x * (1.0 / 6.0) xmoid4 = lambda x: x * x * x * x * (1.0 / 24.0) xmoidp4 = lambda x: 4 * x * x * x * (1.0 / 24.0) xmoidpp4 = lambda x: 12 * x * x * (1 / 0 / 24.0) #bias = [[0.01],[0.01],[0.001],[0.0001],[0.00001],[0.0000001]] bias = [[0.01], [0.01], [0.001]] bias = [] machine = myfeedforward.MyFeedForward( [1, 1, 1, 1, 1, 1, 1, 1], [sigmoid, sigmoid, sigmoid, xmoid3, sigmoid, xmoid2, sigmoid, xmoid1], [ sigmoidp, sigmoidp, sigmoidp, xmoidp3, sigmoidp, xmoidp2, sigmoidp, xmoidp1 ], [ sigmoidpp, sigmoidpp, sigmoidpp, xmoidpp3, sigmoidpp, xmoidpp2, sigmoidpp, xmoidpp1 ], bias) #machine = myfeedforward.MyFeedForward([1,1,1,1,1,1,1],[sigmoid,sigmoid,sigmoid,sigmoid,xmoid3,xmoid2,xmoid1],[sigmoidp,sigmoidp,sigmoidp,sigmoidp,xmoidp3,xmoidp2,xmoidp1],[sigmoidpp,sigmoidpp,sigmoidpp,sigmoidpp,xmoidpp3,xmoidpp2,xmoidpp1],bias) #machine = myfeedforward.MyFeedForward([1,1,1,1,1,1],[sigmoid,sigmoid,sigmoid,sigmoid,xmoid2,xmoid1],[sigmoidp,sigmoidp,sigmoidp,sigmoidp,xmoidp2,xmoidp1],[sigmoidpp,sigmoidpp,sigmoidpp,sigmoidpp,xmoidpp2,xmoidpp1],bias) weights = machine.initial_w() for i in range(len(weights)): weights[i] = 1.0 plot = xyplotter.xyplotter(-1.0, 0.0, 1.0, 1.0, "Simple Plot for Raymond", 2)
#xmoid2 = lambda x: x*x * 0.5 #xmoidp2 = lambda x: x #xmoidpp2 = lambda x: 1.0 #xmoid3 = lambda x: x*x*x * (1.0/6.0) #xmoidp3 = lambda x: 3*x*x * (1.0/6.0) #xmoidpp3 = lambda x: 6*x * (1.0/6.0) # #xmoid4 = lambda x: x*x*x*x * (1.0/24.0) #xmoidp4 = lambda x: 4*x*x*x * (1.0/24.0) #xmoidpp4 = lambda x: 12*x*x * (1/0/24.0) #bias = [[0.01],[0.01],[0.001],[0.0001],[0.00001],[0.0000001]] bias = [[0.01], [0.01], [0.001]] bias = [] machine = myfeedforward.MyFeedForward( [1, 20, 40, 1], [xmoid1, sigmoid, sigmoid, xmoid1], [xmoidp1, sigmoidp, sigmoidp, xmoidp1], [xmoidpp1, sigmoidpp, sigmoidpp, xmoidpp1], bias) weights = machine.initial_w() for i in range(len(weights)): weights[i] *= 1.0 nw = len(weights) print "weights=", weights m = [0.0] * len(weights) v = [0.0] * len(weights) beta1t = 1.0 beta2t = 1.0
#xmoid2 = lambda x: x*x * 0.5 #xmoidp2 = lambda x: x #xmoidpp2 = lambda x: 1.0 #xmoid3 = lambda x: x*x*x * (1.0/6.0) #xmoidp3 = lambda x: 3*x*x * (1.0/6.0) #xmoidpp3 = lambda x: 6*x * (1.0/6.0) # #xmoid4 = lambda x: x*x*x*x * (1.0/24.0) #xmoidp4 = lambda x: 4*x*x*x * (1.0/24.0) #xmoidpp4 = lambda x: 12*x*x * (1/0/24.0) #bias = [[0.01],[0.01],[0.001],[0.0001],[0.00001],[0.0000001]] bias = [[0.01], [0.01], [0.001]] bias = [] machine = myfeedforward.MyFeedForward( [1, 15, 30, 1], [sigmoid, sigmoid, sigmoid, sigmoid], [sigmoidp, sigmoidp, sigmoidp, sigmoidp], [sigmoidpp, sigmoidpp, sigmoidpp, sigmoidpp], bias) #machine = myfeedforward.MyFeedForward([1,13,26,52,1],[xmoid1,sigmoid,sigmoid,sigmoid,xmoid1],[xmoidp1,sigmoidp,sigmoidp,sigmoidp,xmoidp1],[xmoidpp1,sigmoidpp,sigmoidpp,sigmoidpp,xmoidpp1],bias) #machine = myfeedforward.MyFeedForward([1,52,1],[xmoid1,sigmoid,xmoid1],[xmoidp1,sigmoidp,xmoidp1],[xmoidpp1,sigmoidpp,xmoidpp1],bias) #machine = myfeedforward.MyFeedForward([1,1,1,1,1,1,1],[sigmoid,sigmoid,sigmoid,sigmoid,xmoid3,xmoid2,xmoid1],[sigmoidp,sigmoidp,sigmoidp,sigmoidp,xmoidp3,xmoidp2,xmoidp1],[sigmoidpp,sigmoidpp,sigmoidpp,sigmoidpp,xmoidpp3,xmoidpp2,xmoidpp1],bias) #machine = myfeedforward.MyFeedForward([1,1,1,1,1,1],[sigmoid,sigmoid,sigmoid,sigmoid,xmoid2,xmoid1],[sigmoidp,sigmoidp,sigmoidp,sigmoidp,xmoidp2,xmoidp1],[sigmoidpp,sigmoidpp,sigmoidpp,sigmoidpp,xmoidpp2,xmoidpp1],bias) weights = machine.initial_w() for i in range(len(weights)): weights[i] *= 1.0 nw = len(weights) print "weights=", weights
#xmoid2 = lambda x: x*x * 0.5 #xmoidp2 = lambda x: x #xmoidpp2 = lambda x: 1.0 #xmoid3 = lambda x: x*x*x * (1.0/6.0) #xmoidp3 = lambda x: 3*x*x * (1.0/6.0) #xmoidpp3 = lambda x: 6*x * (1.0/6.0) # #xmoid4 = lambda x: x*x*x*x * (1.0/24.0) #xmoidp4 = lambda x: 4*x*x*x * (1.0/24.0) #xmoidpp4 = lambda x: 12*x*x * (1/0/24.0) #bias = [[0.01],[0.01],[0.001],[0.0001],[0.00001],[0.0000001]] bias = [[0.01], [0.01], [0.001]] bias = [] machine = myfeedforward.MyFeedForward( [1, 13, 26, 52, 1], [xmoid1, sigmoid, sigmoid, sigmoid, xmoid1], [xmoidp1, sigmoidp, sigmoidp, sigmoidp, xmoidp1], [xmoidpp1, sigmoidpp, sigmoidpp, sigmoidpp, xmoidpp1], bias) #machine = myfeedforward.MyFeedForward([1,52,1],[xmoid1,sigmoid,xmoid1],[xmoidp1,sigmoidp,xmoidp1],[xmoidpp1,sigmoidpp,xmoidpp1],bias) #machine = myfeedforward.MyFeedForward([1,1,1,1,1,1,1],[sigmoid,sigmoid,sigmoid,sigmoid,xmoid3,xmoid2,xmoid1],[sigmoidp,sigmoidp,sigmoidp,sigmoidp,xmoidp3,xmoidp2,xmoidp1],[sigmoidpp,sigmoidpp,sigmoidpp,sigmoidpp,xmoidpp3,xmoidpp2,xmoidpp1],bias) #machine = myfeedforward.MyFeedForward([1,1,1,1,1,1],[sigmoid,sigmoid,sigmoid,sigmoid,xmoid2,xmoid1],[sigmoidp,sigmoidp,sigmoidp,sigmoidp,xmoidp2,xmoidp1],[sigmoidpp,sigmoidpp,sigmoidpp,sigmoidpp,xmoidpp2,xmoidpp1],bias) weights = machine.initial_w() for i in range(len(weights)): weights[i] *= 1.0 weights0 = weights[:] m = [0.0] * len(weights) v = [0.0] * len(weights) beta1t = 1.0
import myfeedforward5 as myfeedforward import math, random beta = 1.5 sigmoid = lambda x: math.tanh(beta * x) sigmoidp = lambda x: beta * (1.0 / math.cosh(beta * x))**2 sigmoidpp = lambda x: -2.0 * beta * beta * math.tanh(beta * x) * ( 1.0 / math.sech(beta * x))**2 xmoid = lambda x: x * x xmoidp = lambda x: 2 * x xmoidpp = lambda x: 2 machine = myfeedforward.MyFeedForward( [1, 1, 1, 1, 1], [sigmoid, sigmoid, sigmoid, sigmoid, xmoid], [sigmoidp, sigmoidp, sigmoidp, sigmoidp, xmoidp], [sigmoidpp, sigmoidpp, sigmoidpp, sigmoidpp, xmoidpp]) weights = machine.initial_w() alpha = 0.05 A = 0.1 for i in range(1000000): x = 2 * random.random() - 1 e = A * x * x e1 = machine.evaluate([x], weights)[0] gg = machine.w_energy_gradient([x], [e], weights) error = gg[0] g1 = gg[1] for j in range(len(g1)): weights[j] -= alpha * g1[j] #print "x,e,e1,error,w=",x,e,e1,error,weights print x, e, e1, ( e1 - e)**2, error, weights[0], weights[1], weights[2], weights[3]