首页 > 其他分享 >高级神经网络API——Keras 简介和一般工作流程

高级神经网络API——Keras 简介和一般工作流程

时间:2024-12-27 14:33:25浏览次数:5  
标签:Dense 函数 Keras 卷积 模型 高级神经 API input model

  1. 概述
    • Keras 是一个高级神经网络 API,它用 Python 语言编写,能够在 TensorFlow、Theano 或者 CNTK 等深度学习框架之上运行。它的设计理念是简单、快速地构建和实验深度学习模型。Keras 提供了易于使用的接口,使得用户可以专注于模型架构的设计和训练,而不必深入了解底层复杂的计算细节。
  2. 核心组件
    • 模型(Model)
      • Sequential 模型:这是最常用的模型类型,用于构建简单的层堆叠式神经网络。例如,构建一个简单的多层感知机(MLP)用于图像分类任务:

       
      python  
      from keras.models import Sequential
      from keras.layers import Dense
      model = Sequential()
      model.add(Dense(128, activation='relu', input_shape=(784,)))
      model.add(Dense(10, activation='softmax'))

       


      • 这里创建了一个 Sequential 模型,首先添加了一个具有 128 个神经元、激活函数为 ReLU 的全连接层(Dense 层),输入形状为 784(假设是将 28×28 的图像数据展平后的长度),然后添加了一个具有 10 个神经元、激活函数为 softmax 的全连接层用于分类。
      • 函数式 API 模型:对于更复杂的模型架构,如具有多个输入或输出、共享层等情况,使用函数式 API 来构建模型。例如,构建一个简单的多输入模型:

       
      python  
      from keras.layers import Input, Dense
      from keras.models import Model
      input_1 = Input(shape=(32,))
      input_2 = Input(shape=(64,))
      x = Dense(16, activation='relu')(input_1)
      y = Dense(16, activation='relu')(input_2)
      output = Dense(1, activation='sigmoid')(x + y)
      model = Model(inputs=[input_1, input_2], outputs=output)

       


      • 这里定义了两个输入层,分别对两个输入进行处理后相加,再通过一个输出层得到最终输出,然后构建了一个具有两个输入和一个输出的模型。
    • 层(Layer)
      • Keras 有多种类型的层,如全连接层(Dense)、卷积层(Conv2D 等)、池化层(MaxPooling2D 等)、循环层(LSTM、GRU 等)。
      • 全连接层(Dense):用于构建多层感知机等模型。例如,Dense(64, activation='relu')表示一个有 64 个神经元、激活函数为 ReLU 的全连接层。神经元之间全连接,即每个神经元与上一层和下一层的所有神经元都有连接。
      • 卷积层(Conv2D):在处理图像等具有网格结构的数据时非常有用。例如,Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1))表示一个卷积层,有 32 个卷积核,每个卷积核的大小为 3×3,激活函数为 ReLU,输入形状为 28×28×1(假设是单通道的灰度图像)。卷积层通过卷积核在输入数据上滑动进行卷积操作,提取图像中的局部特征。
      • 池化层(MaxPooling2D):用于对数据进行下采样,减少数据量的同时保留重要信息。例如,MaxPooling2D((2, 2))表示一个池化层,它会在 2×2 的区域内取最大值,将输入数据的尺寸在高度和宽度方向上都缩小一半。
    • 优化器(Optimizer)
      • Keras 提供了多种优化器,如随机梯度下降(SGD)、Adagrad、Adadelta、RMSProp 和 Adam 等。优化器用于更新模型的权重,以最小化损失函数。例如,在编译模型时可以选择优化器:

       
      python  
      model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

       


      • 这里选择了 Adam 优化器,损失函数为分类交叉熵(categorical_crossentropy),评估指标为准确率(accuracy)。不同的优化器有不同的特点,Adam 优化器在很多情况下具有较好的收敛速度和性能。
    • 损失函数(Loss Function)
      • 损失函数用于衡量模型预测结果与真实值之间的差异程度。常见的损失函数有均方误差(MSE)用于回归任务,分类交叉熵(Cross - Entropy)用于分类任务。例如,对于回归任务:

       
      python  
      model.compile(optimizer='adam', loss='mse', metrics=['mae'])

       


      • 这里使用均方误差作为损失函数,平均绝对误差(MAE)作为评估指标。对于分类任务,分类交叉熵能够有效地衡量模型预测概率分布与真实标签概率分布之间的差异。
    • 评估指标(Metrics)
      • 评估指标用于衡量模型的性能。除了前面提到的准确率(accuracy)和平均绝对误差(MAE),还有如召回率(Recall)、精确率(Precision)、F1 - score 等用于分类任务的指标,以及决定系数(R - squared)等用于回归任务的指标。例如,在多分类任务中可以使用以下评估指标:

       
      python  
      from keras.metrics import Precision, Recall, F1Score
      model.compile(optimizer='adam', loss='categorical_crossentropy', 
                    metrics=[Precision(), Recall(), F1Score()])

       


      • 这里编译模型时加入了精确率、召回率和 F1 - score 作为评估指标,这些指标可以从不同角度评估模型在分类任务中的性能。
  3. 工作流程
    • 数据准备:首先需要准备好训练数据和测试数据,通常要将数据进行预处理,如归一化、划分数据集等操作。例如,对于图像数据,可能需要将像素值归一化到 [0, 1] 区间。
    • 模型构建:根据任务需求,使用 Sequential 模型或者函数式 API 构建模型,选择合适的层、激活函数等组件。
    • 模型编译:选择优化器、损失函数和评估指标来编译模型。这一步设置了模型训练的规则。
    • 模型训练:使用训练数据对模型进行训练,通常通过调用model.fit()函数。例如,model.fit(x_train, y_train, epochs=10, batch_size=32)表示使用训练数据x_trainy_train对模型进行 10 个轮次(epochs)的训练,每次训练使用 32 个样本(batch_size)。
    • 模型评估:使用测试数据对训练好的模型进行评估,通过调用model.evaluate()函数,它会返回损失值和评估指标的值,用于判断模型的性能好坏。
    • 模型预测:使用训练好的模型对新的数据进行预测,通过调用model.predict()函数。例如,y_pred = model.predict(x_test)会返回模型对测试数据x_test的预测结果。

标签:Dense,函数,Keras,卷积,模型,高级神经,API,input,model
From: https://www.cnblogs.com/changewu/p/18635688

相关文章

  • asp.net core webapi 向前端返回一个文件
    后端接口返回文件[Authorization]//给下载模版添加权限[HttpGet]publicIActionResultDownloadTemplate(){//AppContext.BaseDirectory用于获取项目根目录varfilePath=$"{AppContext.BaseDirectory}/MyStaticFiles/取货模板.csv";if(!System.IO.File.E......
  • 使用docker-compose部署YApi
    最近由于工作需要,要私有化部署一个接口管理平台,作为原驼厂的一员,首先想到的就是YApi(https://github.com/YMFE/yapi),然而这个项目已经两年多没更新,网上有各种继续维护的分支,也没多少更新,基于docker-compose部署的方案维护也不活跃,要不就是走不通,要不就是YApi版本没更新到最新。所以......
  • 使用Karate框架进行API测试
    1.设置环境打开IDEA,新建maven工程删除自动生成的代码,然后在main和test目录新建resources目录打开pom.xml文件添加依赖<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSc......
  • 京东店铺所有商品API接口系列(京东API)
    要获取京东店铺的所有商品数据,您可以使用京东开放平台提供的API接口。以下是一些可能有用的API接口:商品SKU列表接口:该接口可以获取指定店铺下的所有商品SKU列表,包括商品ID、名称、价格等信息。您可以使用该接口来获取店铺中的所有商品信息。商品详情接口:该接口可以获取指定商......
  • js中的Observer提供了哪些API?
    在JavaScript中,没有名为"Observer"的内置对象,但你可能是在提及几种不同的概念或技术,比如浏览器的MutationObserver,或者是Vue.js或React等前端框架中的观察者模式或状态管理库(如Vuex或Redux)的观察者API。MutationObserver:MutationObserver是一个可以监听DOM变化的接口。当DOM树......
  • 高德地图API如何使用
    使用高德地图API的步骤如下:一、注册与登录访问高德开放平台官网,点击右上角的“注册”按钮,进入注册页面。填写相关信息,包括手机号、邮箱、密码等,并完成验证码验证。点击“注册”按钮,完成账号注册。注册成功后,可以使用手机号或邮箱登录。二、创建应用与获取APIKey登录高......
  • 高德地图API详解
    高德地图API是一款基于Web的服务,为开发者提供了丰富的地理数据服务和功能。以下是对高德地图API的详细介绍:一、主要功能地图显示:支持全球范围各地的地图显示,包括街道、建筑物、自然地理等,用户可以将高德地图以图片形式嵌入自己的网页或应用中。地理/逆地理编码:提供结构化......
  • 通过API调取1688商品数据以赋能抖音Tiktok电商业务
    在日益激烈的电商市场竞争中,如何高效地获取并整合商品数据成为了决定业务成败的关键因素之一。对于运营抖音TK(TikTok)电商平台的商家来说,通过API接口调取1688的商品数据,不仅能够丰富自身的商品库,还能提高运营效率,增强市场竞争力。本文将详细介绍如何通过API接口调取1688商品数据......
  • P1552 [APIO2012] 派遣
    P1552[APIO2012]派遣题目背景在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿。题目描述在这个帮派里,有一名忍者被称之为Master。除了Master以外,每名忍者都有且仅有一个上级。为保密,同时增强忍者们的领导力,所有与他们工作相关的指令总是由上级......
  • OpenAI库无缝对接国产大模型:全面解析各厂商API接口与参数配置指南
    随着OpenAI的API在某些地区被限制使用,国内AI开发者和企业开始积极寻找替代方案。国产大模型在此背景下迎来了重要发展机遇,多家科技公司纷纷推出自己的大模型,并提供API接口供开发者使用。使用OpenAI库连接国产大模型已经在多个领域得到了广泛应用,如智能客服、文本生成、图片生成......