LSTM Keras下的代码解读

可以参考 官方文档

https://keras.io/

 

首先,

model = Sequential()

是给神经网络起了头,后面的model.add()是一直加层。

 

model.add(Activation('relu'))

这个激活函数(Activation)keras提供了很多备选的,我这儿用的是ReLU这个,其他还有

  • tanh
  • sigmoid
  • hard_sigmoid
  • linear
    等等,keras库是不断更新的,新出来的论文里面用到的更优化的激活函数里面也会有,比如:
  • LeakyReLU
  • PReLU
  • ELU

目标函数

model.compile(loss='mean_squared_error', optimizer='sgd'

 

compile

编译用来配置模型的学习过程

 

fit

本函数将模型训练nb_epoch

 

保存模型

from keras.models import load_model

 

model.save('my_model.h5')

# creates a HDF5 file 'my_model.h5'

del model

# deletes the existing model

 

# returns a compiled model

# identical to the previous one

model = load_model('my_model.h5')



以下例子可以直接运行,学习参考用。

 

# -*- coding: utf-8 -*-

import numpy as np

from keras.models import Sequential

from keras.layers import Dense

from keras.optimizers import SGD

import cPickle

 

# 构建数据集

X_data = np.linspace(-1,1,100)[:, np.newaxis]

noise = np.random.normal(0,0.05,X_data.shape)

y_data = np.square(X_data) + noise + 0.5

 

# 构建神经网络

model = Sequential()

model.add(Dense(10, input_dim=1, init='normal', activation='relu'))  #全连接层, 10个神经元,1维向量,激活函数是relu

model.add(Dense(1, init='normal'))

sgd = SGD(lr=0.1)  #梯度下降法,用在神经网络的反馈阶段,不断地学习,调整每一层卷积的参数

model.compile(loss='mean_squared_error', optimizer=sgd)

 

# 训练

model.fit(X_data, y_data, nb_epoch=1000, batch_size=100, verbose=0)

 

# 保存模型

model.save_weights('MyNets.h5')

cPickle.dump(model, open('MyNets.pkl',"wb"))

 

# 调用模型

#model = cPickle.load(open('MyNets.pkl',"rb"))

 

# 在原数据上预测

y_predict=model.predict(X_data,batch_size=100,verbose=1)

 

# 可视化

import matplotlib.pyplot as plt

fig = plt.figure()

ax = fig.add_subplot(1,1,1)

ax.scatter(X_data, y_data)

ax.plot(X_data,y_predict,'r-',lw=5)

plt.show()

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WX Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值