- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要使用 tf.gradients() 获取权重和偏差的梯度:
x = tf.placeholder(tf.float32, [batch_size, x_train.shape[1]])
y = tf.placeholder(tf.float32, [batch_size, y_train.shape[1]])
y_ = tf.placeholder(tf.float32, [batch_size, y_train.shape[1]])
Wx=tf.Variable(tf.random_normal(stddev=0.1,shape=[x_train.shape[1],n_hidden]))
Wy=tf.Variable(tf.random_normal(stddev=0.1,shape=[y_train.shape[1],n_hidden]))
b=tf.Variable(tf.constant(0.1,shape=[n_hidden]))
hidden_joint=tf.nn.relu((tf.matmul(x,Wx)+tf.matmul(y,Wy))+b)
hidden_marg=tf.nn.relu(tf.matmul(x,Wx)+tf.matmul(y_,Wy)+b)
Wout=tf.Variable(tf.random_normal(stddev=0.1,shape=[n_hidden, 1]))
bout=tf.Variable(tf.constant(0.1,shape=[1]))
out_joint=tf.matmul(hidden_joint,Wout)+bout
out_marg=tf.matmul(hidden_marg,Wout)+bout
optimizer = tf.train.AdamOptimizer(0.005)
t = out_joint
et = tf.exp(out_marg)
ex_delta_t = tf.reduce_mean(tf.gradients(t, tf.trainable_variables()))
ex_delta_et = tf.reduce_mean(tf.gradients(et, tf.trainable_variables()))
但我总是收到以下错误:
File "/home/ferdi/Documents/mine/mine.py", line 77, in get_mi_batched
ex_delta_t = tf.reduce_mean(tf.gradients(t, tf.trainable_variables()))
File "/home/ferdi/anaconda3/envs/ml_all/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py", line 488, in new_func
return func(*args, **kwargs)
File "/home/ferdi/anaconda3/envs/ml_all/lib/python3.6/site-packages/tensorflow/python/ops/math_ops.py", line 1490, in reduce_mean
reduction_indices),
File "/home/ferdi/anaconda3/envs/ml_all/lib/python3.6/site-packages/tensorflow/python/ops/math_ops.py", line 1272, in _ReductionDims
return range(0, array_ops.rank(x))
File "/home/ferdi/anaconda3/envs/ml_all/lib/python3.6/site-packages/tensorflow/python/ops/array_ops.py", line 368, in rank
return rank_internal(input, name, optimize=True)
File "/home/ferdi/anaconda3/envs/ml_all/lib/python3.6/site-packages/tensorflow/python/ops/array_ops.py", line 388, in rank_internal
input_tensor = ops.convert_to_tensor(input)
File "/home/ferdi/anaconda3/envs/ml_all/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 1048, in convert_to_tensor
as_ref=False)
File "/home/ferdi/anaconda3/envs/ml_all/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 1144, in internal_convert_to_tensor
ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
File "/home/ferdi/anaconda3/envs/ml_all/lib/python3.6/site-packages/tensorflow/python/ops/array_ops.py", line 971, in _autopacking_conversion_function
return _autopacking_helper(v, dtype, name or "packed")
File "/home/ferdi/anaconda3/envs/ml_all/lib/python3.6/site-packages/tensorflow/python/ops/array_ops.py", line 923, in _autopacking_helper
return gen_array_ops.pack(elems_as_tensors, name=scope)
File "/home/ferdi/anaconda3/envs/ml_all/lib/python3.6/site-packages/tensorflow/python/ops/gen_array_ops.py", line 4689, in pack
"Pack", values=values, axis=axis, name=name)
File "/home/ferdi/anaconda3/envs/ml_all/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py", line 787, in _apply_op_helper
op_def=op_def)
File "/home/ferdi/anaconda3/envs/ml_all/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py", line 488, in new_func
return func(*args, **kwargs)
File "/home/ferdi/anaconda3/envs/ml_all/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 3272, in create_op
op_def=op_def)
File "/home/ferdi/anaconda3/envs/ml_all/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 1790, in __init__
control_input_ops)
File "/home/ferdi/anaconda3/envs/ml_all/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 1629, in _create_c_op
raise ValueError(str(e))
ValueError: Shapes must be equal rank, but are 2 and 1
From merging shape 3 with other shapes. for 'Rank/packed' (op: 'Pack') with input shapes: [512,20], [10,20], [20], [20,1], [1].
如果我 reshape 或执行类似的操作,则会发生其他错误。我知道有很多类似的问题,但我仍然无法弄清楚。我做错了什么?
最佳答案
解决方案:
ex_delta_t = tf.reduce_mean( tf.concat([tf.reshape(g, [-1]) for g in tf.gradients(t, tf.trainable_variables())], axis=0))
ex_delta_et = tf.reduce_mean( tf.concat([tf.reshape(g, [-1]) for g in tf.gradients(et, tf.trainable_variables())], axis=0))
或者展开相同的代码:
grads_t_0 = tf.gradients(t, tf.trainable_variables())
grads_et_0 = tf.gradients(t, tf.trainable_variables())
grads_t = []
grads_et = []
for gt,get in zip(grads_t_0, grads_et_0):
grads_t.append(tf.reshape(gt, [-1]))
grads_et.append(tf.reshape(get, [-1]))
grads_t_flatten = tf.concat(grads_t, axis=0)
grads_et_flatten = tf.concat(grads_et, axis=0)
ex_delta_t = tf.reduce_mean(grads_t_flatten)
ex_delta_et = tf.reduce_mean(grads_et_flatten)
说明:
您可能会收到此错误消息,因为您的梯度函数
tf.gradients(t, tf.trainable_variables())
tf.gradients(et, tf.trainable_variables()
返回多重形状的张量。因此,您的 tf.reduce_mean() 操作会提示它无法处理这种多重形状的张量。
作为解决此问题的一种可能性,您应该首先展平而不是连接渐变列表,然后将其传递给 reduce_mean 函数。
Let's see a simple example code to simulate the error and its solution!
#You dummy gradients as the output of tf.gradients()
grad_wx = tf.constant(0.1, shape=[512, 20])
grad_wy = tf.constant(0.2, shape=[10, 20])
grad_b = tf.constant(0.3, shape=[20])
grad_wout = tf.constant(0.4, shape=[20, 1])
grad_bout = tf.constant(0.5, shape=[1])
grads_0 = [grad_wx, grad_wy, grad_b, grad_wout, grad_bout]
sess = tf.Session()
result = tf.reduce_mean(grads_0)
print(sess.run(result)
输出(错误):
ValueError: Shapes must be equal rank, but are 2 and 1
From merging shape 3 with other shapes. for 'Rank/packed' (op: 'Pack') with input shapes: [512,20], [10,20], [20], [20,1], [1].
解决方案:
result = tf.reduce_mean( tf.concat([tf.reshape(g, [-1]) for g in grads_0], axis=0))
print(sess.run(result))
输出(已修复):
0.102899365
关于python - tf.gradients : ValueError: Shapes must be equal rank, 但分别是 2 和 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53306907/
我正在尝试找出一种计算排名的方法。现在它只需要每个条目的赢/输的比率,所以例如100 次中,有 99 次获胜,则胜率达到 99%。但如果一个参赛作品在 1 票中赢得 1 票,那么它的获胜排名将是 10
我尝试了以下操作,但它没有对每个类别进行明智的排名。相反,在不考虑类别的情况下对所有记录进行排名。我希望每个类别重新出现排名 select rs.Section,rs.Field1,rs.Field
如何获得在分区更改时重新启动的 RANK?我有这张表: ID Date Value 1 2015-01-01 1 2 2015-01-02 1 1; 关于
由于我们可以使用 row_number() 获得分配的行号如果我们想使用 dense_rank() 在不跳过分区内的任何数字的情况下找到每一行的排名,我们为什么需要rank()功能,我想不出任何用例
我很难搜索可以帮助我构建文本序列(特征)分类器的文档、研究或博客。我拥有的文本序列包含网络日志。 我正在使用 TensorFlow 构建 GRU 模型,并将 SVM 作为分类函数。我在处理张量形状时遇
我遇到了这类错误。 colsys.f:1367.51: 1 NOLD, ALDIF, K, NCOMP, M, MSTAR, 3,DUMM,0)
import tensorflow as tf x = [[1,2,3],[4,5,6]] y = [0,1] z = [1,2] x = tf.constant(x) y = tf.constant
我在学习 SQL 中的排名函数,发现它使用的排名与 pandas 方法不同。如何得到相同的答案? 提问链接:https://www.windowfunctions.com/questions/rank
在 SQL Server 数据库中,我有一个我对排名感兴趣的值表。 当我执行 RANK() OVER (ORDER BY VALUE DESC) 作为 RANK 时,我得到以下结果(在假设表中): R
我有一个包含以下字段的游戏 table : ID Name Email Points ---------------------------------- 1 Jo
我有以下 TensorFlow 代码: layer_1 = tf.add(tf.matmul(tf.cast(x, tf.float32), weights['h1']), biases['b1'])
我是 Sentdex 教程的神经网络新手。我尝试运行该代码: import tensorflow as tf from tensorflow.examples.tutorials.mnist i
我是 tensorflow 的新手,我正在尝试将双向 LSTM 的一些代码从旧版本的 tensorflow 更新到最新版本 (1.0),但我收到此错误: Shape must be rank 2 bu
我正在使用以下格式的数据集: Column 1 (What I Have), Column 2 (What I need to see) 8 1 8 1 8 1 9 2 9
我有一个 Keras 函数模型(具有卷积层的神经网络),它可以很好地与 tensorflow 配合使用。我可以运行它,我可以适应它。 但是,使用tensorflow gpu时无法建立模型。 这是构建模
MPI 中的进程以什么顺序执行?我的意思是排名明智的顺序? 例如:rank == 0 首先,rank == 1 接下来? 我通过在运行时给出以下命令来考虑两个过程: mpirun -np 2 示例。
我正在尝试使用 cvxpy(因此使用 cvxopt)在具有 28 个节点和 37 条线路的相对简单的网络中对最佳功率流进行建模,但得到的是“Rank(A) < p or Rank([G; A] ) <
我是 tensorflow 的新手,我正在做一些在线练习以熟悉 tensorflow。我要执行以下任务: Create two tensors x and y of shape 300 from an
我有一个 Ubuntu 对话语料库的 .tfrecords 文件。我正在尝试读取整个数据集,以便我可以将上下文和话语分成几批。使用 tf.parse_single_example 我能够阅读一个示例。
实际上我们不能在 if 语句中使用 tf.var 作为 bool 来代替使用 tf.cond。我为规范化输入数据编写了这段代码,但出现了令人困惑的错误,我哪里做错了? def global_co
我是一名优秀的程序员,十分优秀!