首页 > 其他分享 >Keras备忘录

Keras备忘录

时间:2024-09-10 18:14:12浏览次数:9  
标签:None keras 模型 Keras metrics 备忘录 Sequential model

  • 为了记录Keras基本API,本博客展示一次极简机器学习全流程。
  1. 建立模型

 定义一个简单的线性回归模型,使用 Keras 模块来构建和编译模型。以最简单的单层网络为例,设置1个输出节点,输入节点的数量为特征的种数。
keras.Sequential(layers=None, trainable=True, name=None)是models中的一个类,表示序贯模型(各层仅线性堆叠,无跨层连接)。

注意到定义时没有层,那么如何添加层?可以用其自带的方法Sequential.add(layer, rebuild=True)。其各个参数代表含义如下:

  • layer: layer instance.

什么是layer实例?一层layer由一个IO为张量的计算函数(层的call方法)和一些状态组成,这些状态保存在TensorFlow变量中(层的weights)。网络层通用的读写weights方法有

  • layer.get_weights(): 以含有Numpy矩阵的列表形式返回层的权重。
  • layer.set_weights(weights): 从含有Numpy矩阵的列表中设置层的权重(与get_weights的输出形状相同)。

当且仅当它作为模型的第一层时,需传入输入尺寸:

  • input_shape: (整数元组,不包括样本数的轴)

keras.layers中的全连接层为例

Dense

 keras.layers.Dense(units, activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)

对于这种2D层,输入尺寸传入方式也可更为

  • input_dim: 即输入特征种类数量,是整数类型。

接下来需传入一些重要参数:

  • units: 正整数,输出空间维度。
  • activation: 激活函数 (详见 activations)。 若None,则不使用激活函数 (即,线性激活: a(x) = x)。

要实现生成一个指定参数的模型,既可以通过将网络层实例的列表传递给 Sequential 的构造器,来创建一个 Sequential 模型:

Sequential

num_features = 1
model = Sequential([ Dense(1, input_shape=(num_feaetures,)), ])

也可以简单地使用 .add() 方法将各层添加到模型中:

model = keras.models.Sequential()
  # Describe the topography of the model.
  # The topography of a simple linear regression model is a single node in a single layer.
model.add(keras.layers.Dense(units=1, input_shape=(num_features,)))

在机器学习之前,需要把模型的topography编译为Keras可以高效执行的程序。使用Sequential 模型的compile 方法完成,它接收三个参数:

  • 优化器 optimizer。它可以是现有优化器的字符串标识符,如 rmsprop 或 adagrad;也可以是 Optimizer 类的实例,此时可以自定义传参。

keras.optimizers类具有公共的参数 clipnorm 和 clipvalue ,用于控制梯度裁剪(Gradient Clipping)。

而对于优化器对象,以keras.optimizers.RMSprop(learning_rate=0.001, rho=0.9)为例

    • learning_rate: float >= 0. 学习率。
    • rho: float >= 0. RMSProp 梯度平方的移动均值的衰减率。

详见:optimizers

  • 损失函数 loss,模型试图最小化的目标函数。它可以是现有损失函数的字符串标识符,如 categorical_crossentropy 或 mse,也可以是一个目标函数。详见:losses
  • 评估标准 metrics:List of现有的标准的字符串标识符,或keras.metrics.Metric的实例,或自定义的评估标准函数。

对于任何分类问题,你都希望将其设置为 metrics = ['accuracy']。在下面的例子中,采用均方误差作为评估标准:

keras.metrics.RootMeanSquaredError(name="root_mean_squared_error", dtype=None)

Compile

 model.compile(optimizer=keras.optimizers.RMSprop(learning_rate=my_learning_rate),
                loss="mean_squared_error",
                metrics=[keras.metrics.RootMeanSquaredError()])

注意:Compile方法的metrics参数可接受的标准built-in评价函数详见: metrics。上例中的均方误差类是指标 - Keras 中文类的一个实例。

下面的程序创建了一个单层、输出为一维的模型。

 1 def build_model(my_learning_rate, num_features):
 2   """Create and compile a simple linear regression model."""
 3   # Most simple keras models are sequential.
 4   model = keras.models.Sequential()
 5 
 6   # Describe the topography of the model.
 7   # The topography of a simple linear regression model
 8   # is a single node in a single layer.
 9   model.add(keras.layers.Dense(units=1,
10                                   input_shape=(num_features,)))
11 
12   # Compile the model topography into code that Keras can efficiently
13   # execute. Configure training to minimize the model's mean squared error.
14   model.compile(optimizer=keras.optimizers.RMSprop(learning_rate=my_learning_rate),
15                 loss="mean_squared_error",
16                 metrics=[keras.metrics.RootMeanSquaredError()])
17 
18   return model
build_model

2. 训练模型

 Keras 模型在输入数据和标签的 Numpy 矩阵上进行训练。使用Sequential模型的fit方法完成:

fit
 fit(x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None, validation_freq=1, max_queue_size=10, workers=1, use_multiprocessing=False)

常用的参数包括:

  • x: 输入数据。可以是:
    • 一个 Numpy 数组(或类数组),等
  • y: 目标数据。与输入数据 x 类似,它可以是 Numpy 数组(序列)等。
  • batch_size: 整数或 None。每次梯度更新的样本数。如果未指定,默认为 32。未完待续。
  • epochs: 整数。训练模型迭代轮次。一个轮次是在整个 x 或 y 上的一轮迭代。 请注意,与 initial_epoch 一起,epochs 被理解为「最终轮次」。 模型并不是训练了 epochs 轮,而是到第 epochs 轮停止训练。

该方法返回一个 History 对象:其History.epoch属性是各训练轮次的索引组成的列表;其 History.history属性是连续 epoch 训练以及验证集(如果适用)的损失和评估值的记录,可以直接输入pandas.DataFrame方法转化。

更多信息,请查阅Sequential 顺序模型 - 中文文档

训练结束后,可以用模型的get_weights() 方法查看模型参数(weights, bias, etc.),它返回一个flat list,元素依次为:首层的权重,首层的bias,第二层的权重,第二层的bias,…(某层的权重矩阵.shape=(该层的输入维数,输出维数))

 

3. Validate模型

使用Sequential模型的predict_on_batch(x)方法,其中

  • x: 输入数据,Numpy 数组(可用pandas的Series.values方法转换)或列表(如果模型有多输入)。

它返回预测值的NumPy数组。

 

标签:None,keras,模型,Keras,metrics,备忘录,Sequential,model
From: https://www.cnblogs.com/ArmRoundMan/p/18406720

相关文章

  • Seaborn备忘录
    LoadRequiredModulesimportseabornassnsimportpandasaspdfromPandas备忘录(持续更新)importtraining_df Onewaytovisualizerelationshipsbetweenfeaturesinadatasetiswithapairplot.Apairplot generatesagridofpairwiseplotstovisualiz......
  • python利用深度学习(Keras)进行癫痫分类
    一、癫痫介绍        癫痫,即俗称“羊癫风”,是由多种病因引起的慢性脑功能障碍综合症,是仅次于脑血管病的第二大脑部疾病。癫痫发作的直接原因是脑部神经元反复地突发性过度放电所导致的间歇性中枢神经系统功能失调。临床上常表现为突然意识丧失、全身抽搐以及精神异常......
  • Redis备忘录
    基础知识缓存设计思想缓存的主要目的是提高数据访问速度,减少后端数据库的压力。设计时需要考虑:数据一致性:缓存与数据库中的数据需保持一致。缓存失效策略:如LRU(最近最少使用)等,以便有效管理缓存中的数据。数据过期:设置合理的过期时间,避免不必要的数据占用缓存空间。缓存开发......
  • PostgreSQL备忘录
    安装(Docker)拉取PostgreSQL镜像sudodockerpullpostgres运行PostgreSQL容器运行PostgreSQL容器,指定数据库名称、用户和密码:sudodockerrun--namemy_postgres-ePOSTGRES_USER=myuser-ePOSTGRES_PASSWORD=mypassword-p5432:5432-dpostgressudodockerps进入P......
  • 设计模式之备忘录模式
    备忘录模式(MementoPattern)官方的定义是这样的:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。它是面向对象的23种设计模式中的一种,属于行为模式的范围。直白点说就是:我们可以在不暴露更多字段的前提下,直接将......
  • Mac M1用tensorflow中的Keras进行基本图像分类
    一.为什么要进行图像分类、图像识别目的是为了利用计算机对图像进行处理、分析和理解,让计算机能够像人类一样理解和解释图像中的内容。‌这一技术的应用范围广泛,包括但不限于人脸识别和商品识别。人脸识别技术主要应用于安全检查、身份核验与移动支付等领域,而商品识别则广......
  • 【MySQL】语法 · 备忘录
    原创巴韭特锁螺丝一、连接MySQL二、数据库三、表四、表结构五、表数据六、表数据——连接查询七、键八、函数九、视图十、存储过程十一、备份还原十二、用户很多时候深入学习固然很重要,但是想要写下一篇给新手都能看得懂看的很香,并且老鸟可以查漏补缺的的练习......
  • NumPy备忘录
    Pythoncallsmatrices lists,NumPycallsthem arrays andTensorFlowcallsthem tensors. Pythonrepresentsmatriceswiththe listdatatype.Call np.array tocreateaNumPyarraywithyourownhand-pickedvalues.Forexample,thefollowingcallcreate......
  • Pandas备忘录
    DataFrames arethecentraldatastructureinthepandasAPI.It‘slikeaspreadsheet,withnumberedrowsandnamedcolumns.为方便引入例程,先导入对应模块。1importpandasaspdViewCodeThefollowingcodeinstantiatesa  pd.DataFrame  classtogener......
  • 备忘录——C#创建钉钉OA审批实例
    目录1.钉钉接口文档及SDK2.钉钉中创建应用3.代码段3.1获取Token3.2通过手机号获取钉钉UserID等信息3.3创建流程审批实例1.钉钉接口文档及SDK完整发起审批流程实例的步骤:https://open.dingtalk.com/document/orgapp/tutorial-creating-or-updating-an-approval-template调用......