我在jupyter笔记本中有一个NN模型:
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_将不同,如果我创建不同的图形,我是否能够跨模型共享输入数据?
我是否需要为每个模型创建不同的会话?
如果所有模型都在不同的图形中,那么在预测时我可以在相同的输入数据和预测结果上运行所有模型吗?
答案 0 :(得分:0)
您可以尝试variable scoping分享您模型中的代码。
所以基本上你会有一个函数,比如叫make_classification
,每次使用不同的范围都会有权重和偏差。
总而言之,变量范围(基于数字n
的循环)将允许您重用代码而不共享权重。
但是,可以使用现有的API在张量流中轻松完成多标签分类。