gpt4 book ai didi

python - 如何动态更新 tf.ones_like() 的形状?

转载 作者:行者123 更新时间:2023-11-30 09:18:37 27 4
gpt4 key购买 nike

我在 tensorflow 中的权重矩阵尺寸方面遇到问题。

#outputs = tf.reshape(outputs, [batch_size, seq_length, num_classes])

outputs = tf.reshape(outputs, [-1, seq_length, num_classes])

output_dim = outputs.get_shape().as_list()

weights = tf.ones([output_dim[0], seq_length], tf.int32) #TODO: change the dimension

sequence_loss = tf.contrib.seq2seq.sequence_loss(logits=outputs, targets=Y, weights=weights)

所以,我有一个在最后一个时期发生变化的batch_size,并且当涉及到最后一个时期时,权重的维度会引起麻烦。

权重 = tf.ones([output_dim[0], seq_length], tf.int32)导致以下错误:

"Cannot convert a partially known TensorShape to a Tensor: %s" % s)
ValueError: Cannot convert a partially known TensorShape to a Tensor: (?, 25)

你会如何解决这个问题?我尝试使用 tf.ones_like(outputs) 但这似乎不起作用,并且 tf.ones 似乎需要固定值作为其维度。

最佳答案

使用tf.fill ,支持动态形状:

a = tf.placeholder(tf.float32, shape=[None, 25, 10])
b = tf.fill(tf.shape(a)[:-1], 1) # shape=[None, 25]

with tf.Session() as sess:
print(sess.run(b, feed_dict={a: np.zeros([10, 25, 10])}))

# Prints:
# [[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
# [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
# [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
# [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
# [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
# [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
# [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
# [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
# [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
# [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]]

关于python - 如何动态更新 tf.ones_like() 的形状?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48562282/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com