使用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()

参考:http://blog.csdn.net/kl1411/article/details/77895359

猜你喜欢

转载自blog.csdn.net/levy_cui/article/details/79592696