我对TensorFlow模型的定义有疑问。 我正在实现一个相当奇特的神经网络模型,在那里我需要访问不同输入的输出值来计算损失函数...Tensorflow,放置共享变量定义
所以,我定义了神经网络的层功能如下:
def g(input_x,....):
###...Convolutional and Fully Connected Layers...###
# Last FC Layer
with tf.name_scope("output"):
W = tf.Variable(tf.truncated_normal([num_hidden_units, num_classes], stddev=0.05), name="W")
b = tf.Variable(tf.constant(0.1, shape=[num_classes]), name="b")
scores = tf.nn.xw_plus_b(fc_2_output, W, b, name="output")
return scores
然后在我的模型我有这样的事情:
with tf.Graph().as_default():
session_conf = tf.ConfigProto(
allow_soft_placement=FLAGS.allow_soft_placement,
log_device_placement=FLAGS.log_device_placement)
sess = tf.Session(config=session_conf)
with sess.as_default():
###definition of other variables, constants and placeholders###
###weird loss function with scores from different inputs###
loss_function = tf.reduce_mean(alpha1 * weights_ll * tf.nn.softmax_cross_entropy_with_logits(logits=g(input1), labels=labels1) \
+ cu1 * tf.nn.softmax_cross_entropy_with_logits(logits=g(input2), labels=g(input1) \
+ cv1 * tf.nn.softmax_cross_entropy_with_logits(logits=g(input1), labels=labels2))) \
+ ... + ...
optimizer = tf.train.AdamOptimizer(1e-3).minimize(loss_function, global_step=global_step)
##...training steps and such...##
培训工作,但没有跑太久我得到了奇怪的结果,我不知道如果权重定义在g函数正在接受培训,或者它们有点超出了优化器的范围。
不幸的是,我仍然在学习了很多关于tensorflow,我没有TensorBoard结果,现在向您展示。
我只是需要从别人多一点经验,知道它是否是合法的,像这样定义的模型,使用Python函数的输出。
非常感谢您阅读这篇远
嗨,其良好定义模型蟒蛇功能。有没有访问问题。如果有任何问题,那可能是因为损失功能。请说明你得到了什么类型的奇怪结果。减少损失? – hars
损失被降低到大负值在-1e + 15 顺序,但精度不增加,这是一个二元分类问题,它的平均值0.5(随机猜测) –
你尝试用简单的损失函数(一组输入)?在这种情况下精度是否发生变化 – hars