使用tf.nn公司.l2_在不同形状向量集合上的丢失

2024-03-29 10:31:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我想计算我神经网络中所有权重和偏差的l2损失。所以我把所有的权重和偏差加在tf.GraphKeys.正则化损失要计算tensor2'函数中定义的损耗:

W = tf.Variable(tf.truncated_normal([inputDim, outputDim], stddev=0.1), name='W')
b = tf.Variable(tf.ones([outputDim])/10, name='b')

tf.add_to_collection(tf.GraphKeys.REGULARIZATION_LOSSES, W)
tf.add_to_collection(tf.GraphKeys.REGULARIZATION_LOSSES, b)
...

在后面的代码中:

^{pr2}$

我在有3层的网络上使用函数时遇到此错误,但找不到解决方法:

ValueError: Tried to convert 't' to a tensor and failed. Error: Shapes must be equal rank, but are 2 and 1
    From merging shape 4 with other shapes. for 'l2_loss/L2Loss/packed' (op: 'Pack') with input shapes: [784,512], [512], [512,256], [256], [256,10], [10].

Tags: andto函数nameaddtfvariablecollection
1条回答
网友
1楼 · 发布于 2024-03-29 10:31:00

尽管tf.nn公司.l2_loss接收张量作为其参数,您将张量列表传递给tf.nn公司.l2_丢失。因此,错误消息意味着l2_loss无法将列表转换为张量。在

我们应该计算L2损耗

vars = tf.get_collection(tf.GraphKeys.REGULARIZATION_LOSSES)
list_l2_loss = []
for v in vars:
    list_l2_loss.append(tf.nn.l2_loss(v))
total_l2_loss = tf.add_n(list_l2_loss)

添加信息

您可以通过以下方法向集合中添加n-D张量tf.add_到_集合. 但是tf.GraphKeys.正则化损失是由创建的正则化器的保留名称tf.get_变量. 所以我们应该给你起一个原名,比如“我的监管人员”。在

相关问题 更多 >