使用keras入门实践深度学习

本文通过一个具体的实例展示了如何使用Keras构建并训练一个简单的神经网络。从数据集的准备开始,介绍了网络结构的设计,包括全连接层及ReLU激活函数的应用,并详细说明了模型的编译、训练过程以及最终模型的保存与加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

可以参考 官方文档

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.youkuaiyun.com/kl1411/article/details/77895359

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值