最近用到了Keras中的LSTM神经网络,keras中运用序贯模型(sequential)建立一个层层叠加的模型非常方便。
但是比较懵逼的一点是,model.add()中的参数完全不理解,比如input_dim,input_shape,各种用法都有,完全不理解有什么区别。
这里我以一个时间序列的模型为例:
我的输入和输出结果size如下
因为是传统的时间序列,所以特征只有一个维度,因此这里我设置input_dim = 1。而我想把第一层神经输入的结果映射成50维的输出结果,因此我设置output_dim = 50。显然,这样下一层的输入结果input_dim = 50。
另外,还有两个参数return_sequences和return_state。
我默认大家都知道LSTM的输出包含每个单元的hidden state,及长期的cell state(长期的cell state一般是不输出的)
return_sequences:由于每一步计算都会有输出,因此如果为False则只返回最后一步的hidden state,否则返回所有步的hidden state;
return_state:默认为False,为False则不输出cell state。
详细说明可参考这篇文章:https://blog.csdn.net/u0113