What is the error you have? Le 12 déc. 2016 03:16, "Shen Liuxing" <[email protected]> a écrit :
> > > 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. > -- --- 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.
