【问题标题】:Gathering list of 2-d tensors from a 3-d tensor in Keras从 Keras 中的 3-d 张量收集 2-d 张量的列表
【发布时间】:2018-05-01 01:24:32
【问题描述】:

我有一个名为 ma​​in_decoder 的 3-d 张量,形状为 (None,9,256)

我想提取9个形状的张量(None,256)

我尝试过使用 Keras gather,下面是模式代码 sn-p:

for i in range(0,9):
    sub_decoder_input = Lambda(lambda main_decoder:gather(main_decoder,(i)), name='lambda'+str(i))(main_decoder)

结果是 9 个形状的 lambda 层 (9,256)

如何修改它,以便我可以获取或收集 9 个形状的张量 (None,256)

谢谢。

【问题讨论】:

    标签: machine-learning tensorflow nlp keras


    【解决方案1】:

    您可以将 3D 张量切成 9 个 2D 张量并从Lambda 层返回张量列表。

    main_decoder = Input(shape=(9, 256))
    sub_decoder_input = Lambda(lambda x: [x[:, i, :] for i in range(9)])(main_decoder)
    
    print(sub_decoder_input)
    [<tf.Tensor 'lambda_1/strided_slice:0' shape=(?, 256) dtype=float32>,
     <tf.Tensor 'lambda_1/strided_slice_1:0' shape=(?, 256) dtype=float32>,
     <tf.Tensor 'lambda_1/strided_slice_2:0' shape=(?, 256) dtype=float32>,
     <tf.Tensor 'lambda_1/strided_slice_3:0' shape=(?, 256) dtype=float32>,
     <tf.Tensor 'lambda_1/strided_slice_4:0' shape=(?, 256) dtype=float32>,
     <tf.Tensor 'lambda_1/strided_slice_5:0' shape=(?, 256) dtype=float32>,
     <tf.Tensor 'lambda_1/strided_slice_6:0' shape=(?, 256) dtype=float32>,
     <tf.Tensor 'lambda_1/strided_slice_7:0' shape=(?, 256) dtype=float32>,
     <tf.Tensor 'lambda_1/strided_slice_8:0' shape=(?, 256) dtype=float32>]
    

    【讨论】:

      猜你喜欢
      • 2018-10-04
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-19
      • 1970-01-01
      相关资源
      最近更新 更多