tensorflow의 두 가지 매개 변수를 다른 단계에서 변경되기 때문에 자리 표시 자 형태로 사용해야하는 tensorflow의 두 가지 매개 변수를 전달합니다. 나는 훈련 중에 그들을 먹인다. 프로그램 개요는 다음과 같습니다. 제 질문은 제가 효과적으로 먹는 가치관을 가지고 있습니까? 다음 스 니펫을보고 내가 올바르게하고 있다고 말할 수 있다면 고맙겠습니다. 그런데 오류가 발생하지 않습니다.tensorflow 자리 표시자를 함수 매개 변수로 전달
tetha1_placeholder, tetha2_placeholder = tf.placeholder(tf.float32, name='tetha1plh'), tf.placeholder(tf.float32, name='tetha2plh')
hyperparams = {'tetha1': tetha1_placeholder,'tetha2':tetha2_placeholder}
[getting embeddings1,embeddings2, embeddings3 from my model]
loss = loss_function (embeddings1,embeddings1,embeddings3, hyperparams)
with sess.as_default():
while true:
step = sess.run(global_step, feed_dict=None)
t1, t2 = calculate_params(step)
feed_dict = {tetha1_placeholder:t1, tetha2_placeholder:t2}
error=sess.run([loss], feed_dict=feed_dict)
def loss_function (embeddings1,embeddings2,embeddings3, hyperparams):
pos_dist =hyperparams['tetha1'] * tf.reduce_sum(tf.square(tf.subtract(embeddings1, embeddings2)), 1)
neg_dist = hyperparams['tetha2'] *tf.reduce_sum(tf.square(tf.subtract(embeddings1, embeddings3)), 1)
loss = tf.reduce_mean(tf.add(pos_dist,neg_dist))
return loss
감사합니다. @mrry 마지막 부분을 얻지 못했습니다. t1과 t2는 단지 두 개의 스칼라 부동 소수점 숫자입니다. tetha1_placeholder의 모양을 명시 적으로 shape = (1)로 지정하면 더 좋을 것입니다. – Hamid
아, 둘 다 스칼라 인 경우 'tetha1_placeholder = tf.placeholder (tf.float32, shape = [], name'tetha1plh ')'로 정의 할 수 있습니다 (다른 자리 표시 자와 마찬가지로). 정확한 계산에 따라 약간 더 나은 성능 및 오류 메시지를 줄 수 있습니다. – mrry