当前位置: 首页 > news >正文

.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();//下载或加载本地MNIST
		x_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的模型,准确率也在上升,是比较合理的训练结果

相关文章:

  • AI时代前端开发技能变革与ScriptEcho:拥抱AI,提升效率
  • MongoDB 复制(副本集)
  • Uncaught TypeError: Module._malloc is not a function
  • 【学习笔记16】Java中常见的Exception(异常)
  • ROS2 同一个pkg里定义自定义action、msg报错
  • 爬虫解析库:Beautiful Soup的详细使用
  • 怎样把外网的文件放到内网?
  • Python3 运算符
  • 清影2.0(AI视频生成)技术浅析(五):音频处理技术
  • 超高速工业相机的应用
  • angular简易计算器
  • 27.C++继承 3 (复杂的菱形继承与菱形虚拟继承)
  • 蓝桥云课python代码
  • 影像集的过滤
  • 重新求职刷题DAY18
  • [Web 安全] Web 安全攻防 - 学习手册
  • 读取罗克韦尔AllenBradley Micro-Logix1400 罗克韦尔 CIP PCCC通信协议
  • 【Godot4.3】自定义圆角容器
  • FCC CE SRRC MIC是什么意思?
  • vue3 下载文件 responseType-blob 或者 a标签
  • 商务部:“一国一策”落实对非合作“十大伙伴行动”
  • 第九届非遗节首设主宾国主宾城机制,非遗品牌IP授权获关注
  • 哪都“差一点”的《歌手2025》,还能爆吗?
  • 广东茂名信宜出现龙卷,一家具厂铁皮房受损
  • F4方程式上海站引擎轰鸣,见证中国赛车运动不断成长
  • 美国前驻华大使携美大学生拜访中联部、外交部