【问题标题】:Convert a tensor axis into strings and concatenate the axis reshaping the tensor?将张量轴转换为字符串并连接重塑张量的轴?
【发布时间】:2019-09-10 20:24:17
【问题描述】:

如果我的最后一个 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 keras-layer


    【解决方案1】:

    我不确定 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 层来实现您所描述的那样?问题是我需要添加执行此转换的层,然后将新修改的模型保存为 H5 文件。
    • 是的,这是可能的 =) 你必须在 Custom Keras Layer 中实现这个算法。网上有很多例子可以帮助你做到这一点try this answer here。请记住在您的层中实现get_config(),以便您可以正确保存和加载您的 .h5 文件。
    猜你喜欢
    • 2020-02-09
    • 2018-08-04
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    • 2023-01-23
    • 2020-08-05
    • 1970-01-01
    相关资源
    最近更新 更多