down votefavorite 
<http://stackoverflow.com/questions/41083805/why-my-theano-function-can-not-be-compiled#>

I'm trying to fine-tune a RBM autoencoder and I just use random initial 
parameters and random data to test if my theano function can be 
successfully compiled, but it fails, can someone run this code and tell me 
where it is wrong? Thanks in advance.


 import theano
 import theano.tensor as T
 import numpy as np
 import numpy
 rng = numpy.random

 # Assume the input data is a matrix of size(data_num,data_dim)
 # Assume the input data has already been normalized (zero mean and unit 
variance)
 # this is written for one batch, one layer


 '''
 b1 = T.matrix("b1")
 b2 = T.matrix("b2")
 b3 = T.matrix("b3")
 b4 = T.matrix("b4")
 b5 = T.matrix("b5")
 b6 = T.matrix("b6")

 w1 = T.matrix('w1')
 w2 = T.matrix('w2')
 w3 = T.matrix('w3')
 w4 = w1.T
 w5 = w2.T
 w6 = w3.T
 '''
 data = T.matrix("data")

 training_steps = 1000
 simulate_data_num = 50
 lr = 0.01

 ini_value_w1 = rng.randn(10,8)
 ini_value_w2 = rng.randn(8,6)
 ini_value_w3 = rng.randn(6,4)

 ini_value_b1 = np.tile(rng.randn(8,1),(1,simulate_data_num))
 ini_value_b2 = np.tile(rng.randn(6,1),(1,simulate_data_num))
 ini_value_b3 = np.tile(rng.randn(4,1),(1,simulate_data_num))
 ini_value_b4 = np.tile(rng.randn(6,1),(1,simulate_data_num))
 ini_value_b5 = np.tile(rng.randn(8,1),(1,simulate_data_num))
 ini_value_b6 = np.tile(rng.randn(10,1),(1,simulate_data_num))

 w1 = theano.shared(ini_value_w1, name="w1")
 w2 = theano.shared(ini_value_w2, name="w2")
 w3 = theano.shared(ini_value_w3, name="w3")
 w4 = w3.T
 w5 = w2.T
 w6 = w1.T

 b1 = theano.shared(ini_value_b1, name="b1")
 b2 = theano.shared(ini_value_b2, name="b2")
 b3 = theano.shared(ini_value_b3, name="b3")
 b4 = theano.shared(ini_value_b4, name="b4")
 b5 = theano.shared(ini_value_b5, name="b5")
 b6 = theano.shared(ini_value_b6, name="b6")

 para = [b1, b2, b3, b4, b5, b6, w1, w2, w3]

 step1_result = T.dot(w1.T,data) + b1 > 0
 step2_result = T.dot(w2.T,step1_result) + b2 > 0
 step3_result = T.dot(w3.T,step2_result) + b3 > 0
 step4_result = T.dot(w4.T,step3_result) + b4 > 0
 step5_result = T.dot(w5.T,step4_result) + b5 > 0
 result = T.dot(w6.T,step5_result) + b6

 diff = result - data # Cross-entropy loss function
 cost = (diff ** 2).mean() # no regulization, this will return the mean of the 
matrix
 gw1, gw2, gw3, gb1, gb2, gb3, gb4, gb5, gb6 = T.grad(cost, para)

 # Compile
 train = theano.function(
           inputs=[data],
           outputs=[cost],
           updates=((w1, w1 - lr*gw1),(w2, w2 - lr*gw2), \
            (w3, w3 - lr*gw3), (b1, b1 - lr*gb1), \
            (b2, b2 - lr*gb2), (b3, b3 - lr*gb3), \
            (b4, b4 - lr*gb4), (b5, b5 - lr*gb5), \
            (b6, b6 - lr*gb6)))

 predict = theano.function(inputs=[data], outputs=result)

 # Train

 simulate_data = rng.randn(10,simulate_data_num)  # 50 data points



 cost_record = []
 for i in range(training_steps):
    print("iteration:",i)
    cost = train(simulate_data)
    cost_record.append(cost)

 print(cost_record)
 print(cost_record[-1])

 '''
 print("Final model:")
 print(w.get_value())
 print(b.get_value())
 print("target values for D:")
 print(D[1])
 print("prediction on D:")
 print(predict(D[0]))
 '''

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"theano-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to