对LSTM层的参数units 的理解

model = Sequential()
model.add(LSTM(32, batch_input_shape=(None, 10, 64)))

以上LSTM的第一个参数units=32,指的并不是一层LSTM有32个LSTM单元。
在很多LSTM的框图中,我们都会将LSTM单元按照时间顺序排列开来,句子的长度是多少我们就会画出多少个LSTM单元。这也是给我们带来误解的地方。实际上一层LSTM的每个‘单元’是共享参数的,所以并没有所谓的那么多个LSTM单元,我们可以理解为它们其实是同一个LSTM单元,只有一个单元的参数量。

这里我们设置的units=32的大小,其实代表得是LSTM单元内的隐藏层的尺寸。

对于LSTM而言,每个单元有3个门,对应了4个激活函数(3个sigmoid,一个tanh)。也就是说有4个神经元数量为32的前馈网络层。

 

对于LSTM的计算过程,我们这里举一个简单的例子:

假如我们样本的每一句话包含5个单词,每个单词用16维的词向量表示。对于LSTM(units=32),我们可以把LSTM内部的计算过程计算过程简化为:

Y=X1×16W16×32,这里X为(1,16)的向量,W为(16,32)的矩阵,所以运用矩阵乘法,将16维的X转化为32维的向量。

如下图所示:

我们可以简单的将LSTM内部的各种计算想象成全连接的之间的矩阵计算。

所以units代表的不是一层单元的个数,而是单元内部隐藏层的大小。

 

  • 28
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
LSTM参数寻优可以通过基于多网格搜索的方法来实现。下面是一个基于多网格搜索的LSTM参数寻优算法的示例: ```python from sklearn.model_selection import GridSearchCV from keras.models import Sequential from keras.layers import LSTM, Dense from keras.wrappers.scikit_learn import KerasRegressor # 定义LSTM模型 def create_model(neurons=1, activation='sigmoid', optimizer='adam'): model = Sequential() model.add(LSTM(neurons, activation=activation, input_shape=(X.shape[1], X.shape[2]))) model.add(Dense(1)) model.compile(loss='mean_squared_error', optimizer=optimizer) return model # 创建KerasRegressor对象 model = KerasRegressor(build_fn=create_model, verbose=0) # 定义参数网格 neurons = [1, 5, 10] activation = ['sigmoid', 'relu'] optimizer = ['adam', 'rmsprop'] # 定义参数字典 param_grid = dict(neurons=neurons, activation=activation, optimizer=optimizer) # 使用GridSearchCV进行参数搜索 grid = GridSearchCV(estimator=model, param_grid=param_grid, scoring='neg_mean_squared_error', cv=3) grid_result = grid.fit(X, y) # 输出最优参数和最优得分 print("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_)) ``` 在上述示例中,我们首先定义了一个LSTM模型的创建函数`create_model`,然后使用`KerasRegressor`将其包装成一个可用于`GridSearchCV`的回归器。接下来,我们定义了参数网格,包括神经元数量、激活函数和优化器等参数。然后,我们使用`GridSearchCV`进行参数搜索,并指定评分指标为均方误差。最后,输出最优参数和最优得分。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值