Keras LSTM输入的input的特征和时间纬度

input_shape=(128,40)#第一位是时间序列timesteps,第二个40是特征数,之前搞反了训练很慢,调回来准确率就高了。

最好不要用reshape调,用np.transpose()转置调,reshape不懂会不会打乱数据的时序和特征


附上LSTM_model

def LSTM_model():
    n_classes = 6
    inp=Input(shape=(128,40))#第一个是timesteps,第二个是mfcc特征
    #inps=Reshape((40,1))(inp)
    lstm1=LSTM(
        input_shape=(128,40),
        output_dim=256,
        activation='tanh',
        return_sequences=False)(inp)
    dl1=Dropout(0.3)(lstm1)

#     lstm2=LSTM(
#         512,activation='tanh',
#         return_sequences=False)(lstm1)
#     dl2=Dropout(0.5)(lstm2)
   # print("dl2=",dl1)
    #g2=concatenate([g,dl1],axis=1)
#     d10=Dense(1500,activation="relu")(dl2)
#     d10=Dropout(0.5)(d10)
    #model.add(Activation('relu'))
    #l10=LeakyReLU(alpha=0.33)(d10)
    d11=Dense(100,activation="relu")(dl1)
    #model.add(Activation('relu'))
    #l11=LeakyReLU(alpha=0.33)(d11)
    l11=Dropout(0.3)(d11)
    l12=Dense(n_classes, activation='softmax')(l11)



    model=Model(inputs=inp,outputs=l12)
    model.summary()
    #编译model
    adam = keras.optimizers.Adam(lr = 0.0005, beta_1=0.95, beta_2=0.999,epsilon=1e-08)
    #adam = keras.optimizers.Adam(lr = 0.001, beta_1=0.95, beta_2=0.999,epsilon=1e-08)
    #sgd = keras.optimizers.SGD(lr = 0.001, decay = 1e-06, momentum = 0.9, nesterov = False)

    #reduce_lr = ReduceLROnPlateau(monitor = 'loss', factor = 0.1, patience = 2,verbose = 1, min_lr = 0.00000001, mode = 'min')
    model.compile(loss='categorical_crossentropy', optimizer=adam, metrics=['accuracy'])
    return model

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值