使用Keras和MINIST数据集实现简单的stacking

前言

最近做的项目要结题了,发现中期之后啥都没干,赶紧从0开始学习模型融合和RNN的一些基本知识,先套个模型出来再说。
这里主要是在实验的传感器还没到之前搭的一个学习用的demo,走一遍训练的流程。
大致的模型框架是两个基分类器分别使用全连接神经网络和LSTM/GRU网络,然后将预测结果做concate后,送入个简单的softmax回归输出。由于实在是没法使用在线的MINIST,所以用了coursera ML课程中的的手写数据集。对,就是Ng的那个.mat文件,原始数据维度是5000x400。
在这里插入图片描述
整个的demo主要利用Keras实现,sklearn库做K折交叉验证的划分。由于个人刚接触,还是个菜鸡,对于stacking的理解并不到位,可能在meta-classifier上有问题,还请多多指正。

基分类器的搭建与训练

模型搭建

基分类器主要是全连接神经网络和LSTM/GRU,LSTM和GRU分别与全连接网络做stacking看最后结果。
首先是全连接网络,这个就比较简单,这里直接贴代码:

def FC_Model():
    model = tf.keras.models.Sequential()
    model.add(tf.keras.layers.Flatten(input_shape=(400,)))#input layer
    model.add(tf.keras.layers.Dense(20,activation = 'relu',name = 'hidden_layer'))
    model.add(tf.keras.layers.Dense(10, activation='softmax'))
    model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])
    return model

对于LSTM/GRU,大体的思路是:将一张图片的原始数据(400x1),变换为(20x20),将第一个20作为特征数目,第二个20作为时间步数,传入模型中训练。
Keras中LSTM/GRU层的第一个参数为units,即为隐藏单元的个数,关于这个的理解,可以参考

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值