gpt4 book ai didi

python - Keras/Tensorflow : ValueError: Shape (? ,12) 等级必须为 1

转载 作者:太空宇宙 更新时间:2023-11-04 05:19:21 25 4
gpt4 key购买 nike

(Keras 1.0.7,Tensorflow r0.10)

我正在尝试实现我自己的激活函数:

# Custom activation function (Radial Basis Function - RBF)
l2_norm = lambda a, b: K.sqrt(((a - b) ** 2).sum())
def rbf(x, gamma=1.0):
return K.exp(-1 * gamma * l2_norm(x[0], x[1]) ** 2)

这是我的模型的相关部分,我在其中指定了我的自定义激活函数:

model = Sequential()
# Some other layers go here
model.add(Dense(n_classes, activation=rbf))

我收到以下错误:

/raid/home/user/anaconda2/envs/tensorflow/lib/python2.7/site-packages/tensorflow/python/framework/tensor_shape.pyc in assert_has_rank(self, rank)
619 """
620 if self.ndims not in (None, rank):
--> 621 raise ValueError("Shape %s must have rank %d" % (self, rank))
622
623 def with_rank(self, rank):

ValueError: Shape (?, 12) must have rank 1

错误发生在 return K.exp(-1 * gamma * l2_norm(x[0], x[1]) ** 2) 行上,当试图切片 x (具有形状 (?, 12))到 x[0]x[1]

为什么 Tensorflow slice 方法会抛出这个错误?

最佳答案

如错误所述,形状 (?, 12) 不是等级 1。张量等级(有时称为阶数或度数或 n 维)是维度的数量张量。例如,以下张量(定义为 Python 列表)的秩为 2:

t = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

在 TensorFlow 中,切片操作的灵 active 略低于 python numpy。切片中指定的维数必须等于张量的秩。

tf.slice(input, begin, size, name=None)

此操作从 begin 指定的位置开始的张量输入中提取大小为 size 的切片。切片 size 表示为张量形状,其中 size[i] 是您要切片的输入的第“i”维元素的数量。切片的起始位置(开始)表示为每个输入维度中的偏移量。换句话说,begin[i] 是您要从中切片的输入的第“i”维的偏移量。

begin 从零开始; size 以一为基础。如果 size[i] 为 -1,则维度 i 中的所有剩余元素都包含在切片中。

简而言之,运算符要求开始和大小向量(定义要切片的子张量)的长度与输入中的维数相同。例如,要对 3-D 张量进行切片,您必须传递一个包含三个数字的向量(或列表)作为 tf.slice() 的第二个和第三个参数。

例如:

# 'input' is [[[1, 1, 1], [2, 2, 2]],
# [[3, 3, 3], [4, 4, 4]],
# [[5, 5, 5], [6, 6, 6]]]
tf.slice(input, [1, 0, 0], [1, 1, 3]) ==> [[[3, 3, 3]]]
tf.slice(input, [1, 0, 0], [1, 2, 3]) ==> [[[3, 3, 3],
[4, 4, 4]]]
tf.slice(input, [1, 0, 0], [2, 1, 3]) ==> [[[3, 3, 3]],
[[5, 5, 5]]]

因此,您可以按如下方式修改您的 rbf() 函数,它应该可以工作:

def rbf(x, gamma=1.0):
return K.exp(-1 * gamma * l2_norm(x[0, :], x[1, :]) ** 2)

关于python - Keras/Tensorflow : ValueError: Shape (? ,12) 等级必须为 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40832066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com