为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 tf 操作只能在任意函数中工作?

为什么 tf 操作只能在任意函数中工作?

jeck猫 2021-06-04 20:42:13
当我构建一系列张量时, 的操作函数tensorflow,例如tf.transpose(~)或tf.split(~)返回错误。代码window = 60len_feat= 15X = tf.placeholder(tf.float32, shape=[None, window, len_feat]X = tf.transpose(X, (1,0,2))tf.Session().run(X, feed_dict={X: x}) #x has a shape (100, 60, 15)错误"shape (100, 60, 15) can't be reshaped into (60, ?, 15)"但是,如果我构建一个任意函数,例如:X = tf.placeholder(tf.float32, shape=[None, window, len_feat])def fun(X):    X = tf.transpose(X, (1,0,2))    ...它运作良好。是什么造成这种差异?
查看完整描述

1 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

在第一个片段中,您将通过转置的结果覆盖占位符。这不再是占位符。


请注意,它feed_dict允许您替换任何张量的值,而不仅仅是占位符。但是,因为您的占位符的形状为 [None, 60, 15],所以转置的形状为 [60, None, 15]。因此,形状为 [100, 60, 15] 的数据无法放入此张量中,因为第一个维度不匹配。


您可以通过重命名变量来简单地修复第一个片段。例如


window = 60

len_feat= 15

X = tf.placeholder(tf.float32, shape=[None, window, len_feat]

Y = tf.transpose(X, (1,0,2))


tf.Session().run(Y, feed_dict={X: x}) #x has a shape (100, 60, 15)

这应该工作得很好。由于局部变量和全局变量之间的区别,您定义函数的第二个示例可能会起作用。很难说,因为你没有提供完整的代码。


查看完整回答
反对 回复 2021-06-09
  • 1 回答
  • 0 关注
  • 178 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号