tensorflow - TensorFlow 可变形状分配
问题描述
我正在尝试创建一个变量,然后尝试将其分配给我的卷积层的值。
但是它拒绝了,因为它说形状不相等,即使我validate_shape=False
在创建变量时已经通过了。
卷积形状为[32,20,20,3]
。如何将其传递给变量?
底部代码:
conv = tf.layers.conv2d_transpose(conv, filters=3, kernel_size=3, strides=(2,2), padding='same',activation=tf.nn.relu) # TO ASSIGN LATER
g=tf.Variable(([32,20,20]),dtype=tf.float32,validate_shape=False)#THE VARIABLE
loss = tf.reduce_mean(tf.square(conv))
opt = tf.train.AdamOptimizer().minimize(loss)
saver = tf.train.Saver()
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for i in range(1000):
_, xx,inp,output,target = sess.run([opt, loss,x,conv,y])#
print(xx)
print("subtraction result:",output[0]-target[0])
g=g.assign(conv)
print(g.eval())
我收到此错误:
InvalidArgumentError: Assign requires shapes of both tensors to match. lhs shape= [3] rhs shape= [32,20,20,3]
[[Node: Assign_7 = Assign[T=DT_FLOAT, use_locking=false, validate_shape=true, _device="/job:localhost/replica:0/task:0/device:CPU:0"](Variable_9, conv2d_transpose_98/Relu)]]
有人可以帮忙解决这个问题吗?
解决方案
我想你想要:
import numpy as np
import tensorflow as tf
g = tf.Variable(initial_value=np.zeros((32,20,20,3)), expected_shape=(32,20,20,3), dtype=tf.float32)
如果你打印g
你现在得到正确的形状:
<tf.Variable 'Variable_3:0' shape=(32, 20, 20, 3) dtype=float32_ref>
你所做的是这样的:
g = tf.Variable(initial_value=(32,20,20), dtype=tf.float32, valid_shape=False)
通过不声明expected_shape
您默认使用位置参数,第一个参数tf.Variable
是initial_value
根据以下文档:
__init__(
initial_value=None,
trainable=True,
collections=None,
validate_shape=True,
caching_device=None,
name=None,
variable_def=None,
dtype=None,
expected_shape=None,
import_scope=None,
constraint=None
)
您声明的那个形状initial_value
将是一个长度向量,[3]
这正是分配操作所抱怨的形状。
故事的寓意:如果可以的话,按名称声明参数通常不会那么麻烦。:)
推荐阅读
- node.js - mongodb 将数据插入对象数组并更新它
- angular - “错误:未捕获(承诺):TypeError:Object(...)不是函数”使用UniqueDeviceID
- javascript - GScript 变量未定义
- php - PHP 注册表单的验证和插入问题
- r - 时间序列数据中观察的最后一次出现和出现次数
- java - 构建一个 Eclipse 插件。我可以扩展什么依赖项和哪个类来在 Java 和项目的有效 pom 文件中实现警告标志?
- amazon-web-services - 在 CodeBuild 中使用 SAM 部署或 Cloudformation 部署
- google-chrome - Chrome 推出相同站点、安全更改后,之前设置的旧 cookie 会发生什么情况
- ember.js - 如何从 Ember Octane 中的子组件调用当前路由器中的操作?
- reactjs - 使用基于 API 调用的道具渲染组件?