将张量轴转换为字符串并连接重塑张量的轴?
Convert a tensor axis into strings and concatenate the axis reshaping the tensor?
如果我的最后一个 Keras Layer X 输出一个张量,例如像这样:
{
{4, [22, 16, 11, 33], 24},
{4, [12, 33, 87, 17], 14},
{3, [92, 407, 25, 27], 34}
}
如何再添加一层 Y 来转换 X 的输出,如下所示:
{
{4, "22|16|11|33", 24},
{4, "12|33|87|17", 14},
{3, "92|407|25|27", 34}
}
换句话说,我需要将第二个维度变成一个字符串,并将所有值连接起来。
我不确定 Keras 是否有解决这个特定问题的方法。一个可能的解决方案(如果你可以使用列表)是以下实现:
# Imagine you have a output layer like this:
a = [
[4, [22, 16, 11, 33], 24],
[4, [12, 33, 87, 17], 14],
[3, [92, 407, 25, 27], 34]
]
# "transpose" the list and get the second element
column1 = list(zip(*a))[1]
# Join all elements with "|"
newColumn1 = ['|'.join(str(e) for e in row) for row in column1]
# Put back the modified column
b = list(zip(*a))
b[1] = newColumn1
# "Untranspose" your list
a2 = list(zip(*b))
a2
您的输出将是:
[(4, '22|16|11|33', 24), (4, '12|33|87|17', 14), (3, '92|407|25|27', 34)]
如果我的最后一个 Keras Layer X 输出一个张量,例如像这样:
{
{4, [22, 16, 11, 33], 24},
{4, [12, 33, 87, 17], 14},
{3, [92, 407, 25, 27], 34}
}
如何再添加一层 Y 来转换 X 的输出,如下所示:
{
{4, "22|16|11|33", 24},
{4, "12|33|87|17", 14},
{3, "92|407|25|27", 34}
}
换句话说,我需要将第二个维度变成一个字符串,并将所有值连接起来。
我不确定 Keras 是否有解决这个特定问题的方法。一个可能的解决方案(如果你可以使用列表)是以下实现:
# Imagine you have a output layer like this:
a = [
[4, [22, 16, 11, 33], 24],
[4, [12, 33, 87, 17], 14],
[3, [92, 407, 25, 27], 34]
]
# "transpose" the list and get the second element
column1 = list(zip(*a))[1]
# Join all elements with "|"
newColumn1 = ['|'.join(str(e) for e in row) for row in column1]
# Put back the modified column
b = list(zip(*a))
b[1] = newColumn1
# "Untranspose" your list
a2 = list(zip(*b))
a2
您的输出将是:
[(4, '22|16|11|33', 24), (4, '12|33|87|17', 14), (3, '92|407|25|27', 34)]