Шаги для запуска нескольких моделей в тензорном потоке
У меня есть модель NN ниже в ноутбуке Jupyter:
b = tf.Variable(tf.zeros([target_count]))
W = tf.Variable(tf.zeros([feature_count, target_count]))
y = tf.nn.softmax(tf.matmul(x,W) + b)
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y),
reduction_indices=[1]))
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
train_op =
tf.train.GradientDescentOptimizer(learning_rate).minimize(cross_entropy)
Я использую следующий скрипт для обучения этой модели
for epoch in range(training_epochs):
curr_data_batch, curr_target_batch = sess.run([data_batch, target_batch],
options=run_options)
init_op = tf.global_variables_initializer()
sess.run(init_op)
sess.run([train_op], feed_dict={x: curr_data_batch, y_:
curr_target_batch})
В целях классификации по нескольким меткам я хочу создать n двоичных классификаторов. Как изменить этот код для создания n классификаторов?
Нужно ли создавать отдельный график для каждой модели?
Поскольку входные данные одинаковы для всех моделей, но выходные данные y_ будут разными, смогу ли я делиться входными данными между моделями, если буду создавать разные графики?
Нужно ли создавать разные сессии для каждой модели?
Если все модели представлены на разных графиках, можно ли при прогнозировании использовать все модели на одних и тех же входных данных и с прогнозируемыми результатами?
1 ответ
Вы можете попробовать переменную область видимости для совместного использования кода в вашей модели.
Так что в основном у вас будет одна функция, скажем, называется make_classification
которые будут иметь веса и смещения, инициализированные каждый раз с другой областью действия.
Чтобы суммировать все это, переменная область видимости (основанная на цикле против числа n
) позволит вам повторно использовать ваш код без разделения весов.
Тем не менее, классификация по нескольким меткам может быть легко выполнена в тензорном потоке с использованием существующего API.