.Net 9下使用Tensorflow.net---DNN_Keras

.Net 9下使用Tensorflow.net---DNN_Keras

  • 1、创建应用,导入依赖
  • 2、编写代码
    • 1)添加引用
    • 2)创建基础对象
    • 3)初始化数据集
    • 4)重点步骤:创建 Keras下的DNN模型
    • 5)训练模型得到评估值
    • 6)结果输出

这个例子依然采用dnn的模型。但是依赖于 keras来实现,
整体的步骤还是如此:
一、数据加载,预处理
二、选择网络训练模型(本例使用 Eager的 DNN)
三、定义损失函数、优化函数
四、训练模型且通过优化函数优化网络权重参数
五、评估结果

1、创建应用,导入依赖

这个和 .Net 9下使用Tensorflow.net—DNN_Eager 中操作一样,不再赘述

2、编写代码

1)添加引用

using Tensorflow;
using Tensorflow.Keras.Engine;
using Tensorflow.Keras.Layers;
using Tensorflow.Operations.Initializers;
using Tensorflow.Keras.Optimizers;
//using NumSharp;
using static Tensorflow.Binding;
using static Tensorflow.KerasApi;

2)创建基础对象

IModel _model;LayersApi _layers=new LayersApi();

3)初始化数据集

keras的API很简洁,能很清楚看到,初始化数据分为:
1、加载数据集
2、整理训练集(动作分为:数据集维度整理,归一化数据格式整理)
3、整理测试集

   public void FNN(){var (x_train, y_train, x_test, y_test) = keras.datasets.mnist.load_data();//下载或加载本地MNISTx_train = x_train.reshape((60000, 784))/255f;x_test = x_test.reshape((10000, 784)) / 255f;}

4)重点步骤:创建 Keras下的DNN模型

   public void FNN(){var inputs = keras.Input(shape: 784);//第一个全连接层var outputs= _layers.Dense(64,activation:keras.activations.Relu).Apply(inputs);//第二个全连接层outputs = _layers.Dense(64, activation: keras.activations.Relu).Apply(outputs);//输出层outputs = _layers.Dense(10).Apply(outputs);//搭建keras模型_model = keras.Model(inputs, outputs,name:"mymnist_model");_model.summary();//将Keras DNN模型编译成 TensorFlow的静态图_model.compile(loss: keras.losses.SparseCategoricalCrossentropy(from_logits: true),optimizer: keras.optimizers.RMSprop(),metrics: new[] { "accuracy" });}

说明:
DNN模型是前馈网络神经模型,是一个多层的结构,每一个层中神经元和下一个层的神经元是全连接的。
本例中注意内容:
1、采用的 Keras的Functional API的方式来创建模型,该方式 下通过 加载数据集,指定输入 隐藏 输出层的创建模型方式。该方式的好处是 可以搭建任意结构的神经网络,本例创建的是一个两层的DNN神经网络模型。
2、主要是通过Keras的 Dense函数来 创建每层,该函数创建的是一个全连接层,其中重要参数:
a、神经元数量: 整数,表示该层的输出空间维度(即该层神经元的数量)。
b、激活函数:这个函数的作用是对处理结果进行非线性变换。是整个神经网络计算不再是单纯的线性运算(如果没有激活函数,那么整个神经网络无非就是 矩阵的相加或者相乘)。有了激活函数之后,可以将输入或者上一层的输出经过非线性变换后更加接近求解,影响反向梯度传播。
常用的激活函数包括 ‘relu’、‘sigmoid’、‘tanh’ 等,sigmod和tanh前面介绍过了,此处使用relu,表达式为:
在这里插入图片描述
其实可以看出,该函数可以有效的实现 激活函数对于 梯度及稀疏性的要求。
3、通过keras.Model的方法,可以直接创建模型

5)训练模型得到评估值

   public void FNN(){//使用输入数据和标签来训练模型_model.fit(x_train, y_train, batch_size: 64, epochs: 2, validation_split: 0.2f);//评估模型_model.evaluate(x_test, y_test,verbose:2);//序列化保存模型_model.save("mnist_model");}

6)结果输出

在这里插入图片描述
可以看到,终端最终的书结果 符合DNN的模型,准确率也在上升,是比较合理的训练结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/896482.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

边缘计算收益低的三大指标

边缘计算收益低的三大指标主要包括以下方面: 1. 资源贡献不足: 边缘计算的收益通常基于所提供的带宽、存储和计算资源来计算。如果设备的网络带宽有限、在线时间短或提供的存储容量较小,可能无法满足平台设定的最低贡献标准,从而导…

重大更新!锂电池剩余寿命预测新增 CALCE 数据集

往期精彩内容: 单步预测-风速预测模型代码全家桶-CSDN博客 半天入门!锂电池剩余寿命预测(Python)-CSDN博客 超强预测模型:二次分解-组合预测-CSDN博客 VMD CEEMDAN 二次分解,BiLSTM-Attention预测模型…

开发一个交易所需要哪些技术?

在当今数字化时代,交易所作为金融市场的重要组成部分,其技术架构和功能的复杂性日益增加。无论是传统的股票、期货交易所,还是新兴的数字货币交易所,开发一个高效、安全、可靠的交易所系统都是一个复杂而系统的工程。本文将深入探…

Java语言Leetcode中常用的一些基础语法

文章目录 Java语言Leetcode中常用的一些基础语法栈与队列栈队列 类型转换字符串与字符数组的转换数组与 List 的转换 排序使用 Collections.sort()使用 List.sort()自定义对象排序 Java语言Leetcode中常用的一些基础语法 栈与队列 栈 在Java中,栈通常可以通过 ja…

C++ STL(三)list

目录 list是什么 构造函数 元素访问 容量操作 修改 迭代器 code实例 实现简单的list forward_list是什么 构造函数 元素访问 容量 修改 迭代器 code实例 实现一个简单的forward_list list是什么 std::list 是 C 标准模板库(STL)中的一个…

【Maui】系统找不到指定的文件Xamarin.Android.Aapt2.targets

文章目录 前言一、问题描述二、解决方案三、软件开发(源码)四、项目展示 前言 .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架,用于使用 C# 和 XAML 创建本机移动和桌面应用。 使用 .NET MAUI,可从单个共享代码库开发可在 And…

sql server 复制从备份初始化数据

参考 : 从备份初始化订阅(事务) - SQL Server | Microsoft Learn sql server 复制默认是用快照初始化数据的,也支持从备份初始化数据,参考如上

GDidees CMS v3.9.1本地文件泄露漏洞(CVE-2023-27179)

漏洞简介: GDidees CMS v3.9.1及更低版本被发现存在本地文件泄露漏洞,漏洞通过位于 /_admin/imgdownload.php 的 filename 参数进行利用。 漏洞环境: 春秋云镜中的漏洞靶标,CVE编号为CVE-2023-27179 漏洞复现: 进入靶场发现没…

Redis面试题----MySQL 里有 2000w 数据,Redis 中只存 20w 的数据,如何保证 Redis 中的数据都是热点数据?

要保证 Redis 中存储的 20w 数据都是热点数据,可以从数据筛选和数据淘汰两个大的方面来考虑,以下是详细的实现思路和方法: 数据筛选 1. 基于业务规则 分析业务场景:不同的业务场景有不同的热点数据特征。例如,在电商…

【问题记录】Go项目Docker中的consul访问主机8080端口被拒绝

【问题记录】Go项目Docker中的consul访问主机8080端口被拒绝 问题展示解决办法 问题展示 在使用docker中的consul服务的时候,通过命令行注册相应的服务(比如cloudwego项目的demo_proto以及user服务)失败。 解决办法 经过分析,是…

【第十节】C++设计模式(结构型模式)-Flyweight( 享元)模式

目录 一、问题背景 二、模式选择 三、代码实现 四、总结讨论 一、问题背景 享元模式(Flyweight Pattern)在对象存储优化中的应用 在面向对象系统的设计与实现中,创建对象是最常见的操作之一。然而,如果一个应用程序使用了过多…

spring boot 2.7 + seata +微服务 降级失败问题修复

文章引流 一个简单而使用的API管理工具 版本号 spring boot 2.7.17 spring-cloud-dependencies 2021.0.8 spring-cloud-circuitbreaker-resilience4j 2.1.7 spring-cloud-starter-alibaba-seata 2021.1 jdk 1.8原因分析 未配置属性 feign.circuitbreaker.enabledtrue # 未…

实现实时数据仓库开源项目

根据你的需求,以下是一些可以实现类似 ClickHouse 的实时数仓功能的项目,这些项目提供了高性能的数据处理和分析能力,适合实时数据仓库的场景: 1. Apache Doris Apache Doris 是一个开源的实时数据仓库,支持高吞吐量…

【字符串】最长公共前缀 最长回文子串

文章目录 14. 最长公共前缀解题思路:模拟5. 最长回文子串解题思路一:动态规划解题思路二:中心扩散法 14. 最长公共前缀 14. 最长公共前缀 ​ 编写一个函数来查找字符串数组中的最长公共前缀。 ​ 如果不存在公共前缀,返回空字符…

Maven的传递性、排除依赖、生命周期、插件

一、Maven的传递性 蓝色背景中的两个jar包是projectA的直接依赖,其余的Jar包是projectA的间接依赖。 projectA可以使用直接依赖,也可以使用间接依赖。 maven-projectB项目引入了maven-projectC(整个项目打成了jar包)和junit两个jar包。 ma…

API,URL,Token,XML,JSON是干嘛的

API,URL,Token,XML,JSON是干嘛的 API的作用 API(Application Programming Interface,应用程序编程接口)是一组定义和协议,用于构建和交互软件应用程序。API允许不同的软件系统之间…

Spring Boot操作MaxComputer(保姆级教程)

目录 引言 一、引入依赖 二、配置文件 application.properties(信息用自己的奥) 三、实体类User.java 四、UserController 五、UserService 六、UserDao 七、UserDao.xml 八、postman 访问,成功查询数据 附件(修改和删除数据) 引言…

Java【网络原理】(2)初识网络续与网络编程

目录 1.前言 2.正文 2.1TCP协议与UDP协议 2.2socket API进行网络编程 2.2.1DatagramPacket类 2.2.1.1发送数据报 2.2.1.2接收数据报 2.2.1.3获取数据报内容 2.2.1.4设置数据报内容 2.2.2DatagramSocket类 2.2.2.1构造方法 2.2.2.2常用方法 2.2.3具体代码与解释 3…

【Oracle专栏】sqlplus显示设置+脚本常用显示命令

Oracle相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 1.内容概述 本文主要针对oracle 运维中常用知识点进行整理,包括: 1)sqlplus模式下,为了方便查询设置相应的行宽、列宽、行数。…

在一台win10专业版设备上使用docker的怪现象

这台设备上,wsl环境无法直接安装docker,必须要在宿主机安装Docker Desktop.然后,在wsl运行前,要先启动docker desktop,否则,你看不到你自己创建的映像。 然后如果没有docker desktop加持,你在尝…