我對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