RNN_LSTM_TENSORFLOW не передает обновленные w, b в новую эпоху, хотя это происходит в следующей партии в той же эпохе - PullRequest
0 голосов
/ 05 декабря 2018

У меня проблема, она может быть очевидна, но я не знаю, как ее исправить.Хотя кажется, что w, b обновляются в каждом пакете, когда новая эпоха начинает w, b не последние (те, которые приходят из последнего пакета).Таким образом, nn делает одно и то же в каждой эпохе, не поправляясь.

Вот код, если вы видите что-то, пожалуйста, скажите мне!

, если name ==' main ':

tf.reset_default_graph() #sos τελειο

# Training Parameters
lr = 0.0001
epochs = 10
batch_size = 100
total_series_length = 10000
training_steps = int(total_series_length / batch_size) #ποσες φορες θα αλλαξουν τα w, b 
display_step = int(training_steps / 4) 

# Network Parameters
timesteps = 1 
look_back_window = 80 # num of inputs
num_hidden = 200 # num of features/nodes at hidden layer 
num_output = 1 

# inputs
a, b, steps = (1, 10*np.pi, total_series_length - 1)
step = (b - a)/steps
x = np.array( [ a + i*step for i in range(steps + 1) ], dtype = np.float32 )
sequence = np.sin(x)
traindata =  sequence[ : len(sequence) ] #διαλεγω τι ποσοστο θα κανω train
print('traindata.shape = {}'.format(traindata.shape))
trainX, trainY = create_dataset(traindata, look_back_window)
print('trainX.shape = {}, trainX.shape = {}'.format(trainX.shape, trainY.shape))

# Graph input
X = tf.placeholder(tf.float32, [None, timesteps, look_back_window])
Y = tf.placeholder(tf.float32, [None])#, num_output])

# Define weights
w = {'out': tf.Variable(tf.random_normal([num_hidden, num_output]), dtype = tf.float32)}
b = {'out': tf.Variable(tf.random_normal([num_output]), dtype = tf.float32)}

last_output = RNN(X, w, b,look_back_window, num_hidden)
prediction_operation = tf.nn.tanh(last_output) #sigmoid maybe better, check

# Define loss and optimizer
loss_operation = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits = last_output, labels = Y))
optimizer = tf.train.AdamOptimizer(lr)
train_operation = optimizer.minimize(loss_operation)

# Initialize the variables (i.e. assign their default value)
init = tf.global_variables_initializer()

# Start training
with tf.Session() as sess:
    # Run the initializers
    sess.run(init)

    for epoch in range(epochs) :
        print('\n epoch = {}'.format(epoch))
        for step in range(0, training_steps): #παει απο το 0 εως το 99 step = 100steps
            batch_x, batch_y = trainX[ (step * batch_size) : (batch_size + step * batch_size), : ], trainY[ (step * batch_size) : (batch_size + step * batch_size) ]
            batch_x = batch_x.reshape(batch_x.shape[0], timesteps, batch_x.shape[1])

            sess.run(train_operation, feed_dict = {X : batch_x, Y : batch_y})
            loss = sess.run(loss_operation, feed_dict={X : batch_x, Y : batch_y})
            pred_batch = sess.run(prediction_operation, feed_dict = {X : batch_x})

            if  (step % display_step == 0 or step == training_steps - 1 ):
                # Calculate batch loss
                print( '{} training step'.format(step) )
                #print( 'batch_x.shape = {}, batch_y.shape = {}'.format(batch_x.shape, batch_y.shape) )
                print( 'loss = {}'.format(loss) )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...