给定一些占位符张量x,使得:
x = tf.placeholder(None, 100)
我想知道为什么:
h = tf.zeros(shape = (tf.shape(x)[0], 50))
有效但有点像:
h = tf.get_variable("h", shape = (tf.shape(x)[0], 50), initializer = tf.constant_initializer(0.0))
给我一个值错误:
ValueError:必须完全定义新变量(pred/h)的形状,而是(?,50)
难道他们都没有初始化一些变量,为什么要使它tf.zeros(...)具有未知大小的工作,而tf.get_variable(...)不是?
您可以为运行局部张量设置动态形状(可以在计算需要时动态创建),如零,一,随机张量等.
但是对于变量,你不能因为它们需要在每次运行之间进行分配和保存,所以它们需要具有固定的形状(不依赖于运行操作).
要获得相同的结果,您应该使用x.get_shape()[0]哪个将返回所请求的维度(如果已定义).
| 归档时间: |
|
| 查看次数: |
662 次 |
| 最近记录: |