记录在学习Keras中遇到的知识点,以及代码中的模块运用。
- TimeDistributed:使用时间序列来进行一系列的张量操作,在指定的每一时间序列中都是共享权重信息的。举个例子清晰明了:
应用于Conv2D层:
> from keras.models import Input,Model
from keras.layers import Dense,Conv2D,TimeDistributed
input_ = Input(shape=(12,32,32,3))
out = TimeDistributed(Conv2D(filters=32,kernel_size=(3,3),padding='same'))(input_)
model = Model(inputs=input_,outputs=out)
model.summary()
输入类型是N,H,W,C,即时间序列数是12,卷积操作使用TimeDistributed就相当于这12个时间序列共享一个卷积层参数信息,无论时间序列值为多少,参数总量还是一定的。此处一共有896个参数,卷积核weights有3×3×3×32=864个,卷积核bias有32个。
应用于Dense层:
#coding:utf-8
from keras.models import Input,Model
from keras.layers import Dense,Conv2D,TimeDistributed
input_ = Input(shape=(12,8))
out = TimeDistributed(Dense(units=10))(input_)
#out = Dense(units=10)(input_)
model = Model(inputs=input_,outputs=out)
model.summary()
此处的参数为90个(权重参数为8*10=80,偏置参数为10)序列长度一共是12个,这12个时间序列共享90个参数,整个网络输出大小为(None,12,10)