首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何动态更新tf.ones_like()的形状?

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

Stack Overflow用户
提问于 2018-02-01 20:01:18
回答 1查看 751关注 0票数 1

我在tensorflow中的权重矩阵的维数方面遇到了问题。

代码语言:javascript
运行
复制
#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,当它到达最后一个纪元时,权重的维度会带来麻烦。

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

代码语言:javascript
运行
复制
"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似乎需要一个固定值作为其维度。

EN

回答 1

Stack Overflow用户

发布于 2018-02-01 20:04:34

使用支持动态形状的tf.fill

代码语言:javascript
运行
复制
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]]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48562282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档