Поскольку мне приходилось запускать одну и ту же часть кода в моем сценарии несколько раз, мне было интересно, можно ли передать tf.Session
в качестве аргумента пользовательской функции, чтобы выполнить некоторые операции внутри функции, избегая, таким образом,повторяющийся код.
Обновление Пример использования
with tf.Session as sess:
my_training(init, epochs, Xtrain, Ytrain, batch,\
optimizer, loss, predictions, X, Y, sess)
validation_error = sess.run(loss, feed_dict={X:Xvalid, Y:Yvalid})
, где оптимизатор, потери, входы, выходы, Xtrain и Ytrain и т. д. являются ранее созданными тензорами, и my_training
- это функция, которую я создал для обучения NN отдельным скриптом.
def my_training(init, epochs, Xtrain, Ytrain, batch,\
optimizer, loss, predictions, X, Y, sess):
# Shuffle the training set
Xtrain, Ytrain = shuffle(Xtrain, Ytrain, random_state = 20)
# Initialize all variables (network weights, biases and optimizer)
sess.run(init)
# Loop over the training epochs
for epoch in range(epochs):
# Loop over mini-batches in the epoch
for offset in range(0, Xtrain.shape[0], batch):
batch_x = Xtrain[offset: offset + batch]
batch_y = Ytrain[offset: offset + batch]
sess.run(optimizer, feed_dict = {X:batch_x, Y:batch_y})