TimeDistributed 简介

TimeDistributed应用一个layer到每个时间步

  • 输入至少是三维(层的build函数里会判断),index 1 被认为是时间步的维度

  • 举个例子 输入(32,10,16) batch_size=32 sequence_length=10 hidden_size=16,应用Dense到每个时间步

        # as the first layer in a model
        model = Sequential()
        model.add(TimeDistributed(Dense(8), input_shape=(10, 16)))
        # now model.output_shape == (None, 10, 8)
    
  • 输出维度 (32, 10, 8).

  • 后续的层则不需要再输入 input_shape

        model.add(TimeDistributed(Dense(32)))
        # now model.output_shape == (None, 10, 32)
    
  • 输出 (32, 10, 32).

  • TimeDistributed 能够被任意层使用,不仅仅是Dense,例如 Conv2D layer:

        model = Sequential()
        model.add(TimeDistributed(Conv2D(64, (3, 3)),
                                  input_shape=(10, 299, 299, 3)))
    
  • 最后一个小问题,代码里的解释有个independently字眼,传入的Dense是独立怎么理解,这里应该是对每个时间步独立运行,但是传入的Dense都是一个,这里可以从参数数量上验证下

  • timedistributed_2 (TimeDistribute) (None, 32, 5) 325 bidirectional_1[0][0] 从一个64维到5维的TimeDistribute的参数数量为325 64*5+5=325

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值