Я занимаюсь разработкой модели нейронной сети с использованием Tensorflow.В перекрестной проверке LOSO мне нужно обучить модель 10 раз, так как у меня есть данные по 10 различным предметам.
Принимая это во внимание, мне нужно сбросить оптимизатор и веса сети в началекаждая перекрестная проверка.Я определил веса следующим образом:
weights = {
'w1' : tf.Variable(tf.random_uniform(shape = [100, 10],seed = 0)),
'w2' : tf.Variable(tf.random_uniform(shape = [10, 100],seed = 0))}
и сбросил оптимизатор и веса путем повторной инициализации всех глобальных переменных следующим образом:
# Start session to run Tensors and Operations
with tf.Session() as sess:
# Optimizer
optimizer = tf.train.GradientDescentOptimizer(lr).minimize(loss)
# Variables initializer
init = tf.global_variables_initializer()
# Loop over the 10 cross-validation subjects
for subject in range(0,10):
# Initialize global variables and optimizer
sess.run(init)
# Print initialized weights (should be always the same)
print(sess.run(weights['w1']))
# Loop over epochs to train the model
for epoch in range(epochs):
# Run network optimizer for the current epoch
_,cost = sess.run([optimizer,loss], feed_dict ={X:x_train[subject,:], Y:y_train[subject,:]})
Однако на каждой итерации цикла Iпечатать разные значения для весов, например, начальное значение Operation, которое я установил в 0, не выполняет свою работу.Кто-нибудь знает, чего мне не хватает?