读书笔记(四):深度学习基于Keras的Python实践

多分类实例:鸢尾花分类

针对鸢尾花分类问题创建神经网络的函数功能,创建一个简单的全连接网络,包括一个输入层(4个输入神经元)、两个隐藏层和一个输出层,采用adam作为优化器,adam是一种用来替换随机梯度下降的优化算法, adam的调参相对简单,默认参数可以处理大部分问题,并且使用在Keras中称为分类交叉熵的对数损失函数

  • 评估模型: 确定模型的性能是否达到预定目标,黄金标准是k折交叉验证,首先定义模型评估程序,这里将定义为10,在分割数据之前对数据进行随机乱序排列,然后就可以使用10折交叉验证来评估已经定义完成的神经网络模型,并打印评估结果
回归问题实例:波士顿房价预测

回归问题是用来预测趋势的一类问题,如价格预测、乘客人数预测等等,波士顿房价数据集包含14个特征和506条数据

  • 这些特征属性的描述,可以发现输入数据的度量单位不统一,需要对数据进行尺度调整,以便于提高模型的准确度,实例中使用Scikit-Learn中提供的数据集进行模型的训练与评估

构建基准模型:首先建立一个简单的神经网络模型,并将其作为模型改进的基准,每次模型的改进,都是以提高基准模型的性能为基础的

#首先建立一个简单的神经网络模型,并将其作为模型改进的基准,每次模型的改进,都是以提高基准模型的性能为基础的,导入所有需要的函数和对象开始
from sklearn import datasets
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasRegressor
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import KFold
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.model_selection import GridSearchCV

#导入数据后应设定随机数种子,以便于重复构建模型,并得到相同的结果
dataset = datasets.load_boston()

x = dataset.data
y = dataset.target

#设定随机数种子
seed = 7
np.random.seed(seed)

#创建Keras模型后,使用包装类来封装模型,并通过Scikit-Learn评估模型,因为Scikit-Learn具有完善的评估模型的方法,可以使用少量的代码实现数据准备和对模型进行评估,Keras包装类需要一个函数作为参数,所以必须定义并使用这个函数创建神经网络模型
#编译模型的时候,采用Adam优化器,均方误差MSE作为损失函数,同时采用相同的均方误差来评估模型的性能,值越小代表模型性能越好,通常均方误差为14,期待调优到10
#构建模型函数
def create_model(units_list=[13],optimizer='adam',init='normal'):
    #构建模型
    model = Sequential()

    #构建第一个隐藏层和输入层
    units = units_list[0]
    model.add(Dense(units=units,activation='relu',input_dim=13,kernel_initializer=init))
    #构建更多的隐藏层
    for units in units_list[1:]:
        model.add(Dense(units = units,activation='relu',kernel_initializer=init))

    model.add(Dense(units=1,kernel_initializer=init))

    #编译模型
    model.compile(loss = 'mean_squared_error',optimizer=optimizer)

    return model
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值