网站的构建,域名一级和二级的区别,郑州网站推广哪家专业,网站内容编辑怎么做.Net 9下使用Tensorflow.net---DNN_Keras 1、创建应用#xff0c;导入依赖2、编写代码1#xff09;添加引用2#xff09;创建基础对象3#xff09;初始化数据集4#xff09;重点步骤#xff1a;创建 Keras下的DNN模型5#xff09;训练模型得到评估值6#xff09;结果输… .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 _layersnew 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的模型准确率也在上升是比较合理的训练结果