用TensorFlowNET 写出多元线性回归代码
时间: 2024-05-03 18:19:20 浏览: 89
以下是使用 TensorFlow.NET 实现多元线性回归的示例代码:
```csharp
using System;
using Tensorflow;
using static Tensorflow.Binding;
namespace MultiLinearRegression
{
class Program
{
static void Main(string[] args)
{
// 输入数据
var x1 = tf.constant(new float[] { 73, 93, 89, 96, 73, 89, 96, 73, 93, 89, 96, 73, 89, 96, 73, 93, 89, 96, 73, 89, 96 });
var x2 = tf.constant(new float[] { 80, 88, 91, 98, 66, 78, 89, 96, 80, 88, 91, 98, 66, 78, 89, 96, 80, 88, 91, 98, 66 });
var x3 = tf.constant(new float[] { 75, 93, 90, 100, 70, 80, 90, 100, 75, 93, 90, 100, 70, 80, 90, 100, 75, 93, 90, 100, 70 });
var y = tf.constant(new float[] { 152, 185, 180, 196, 142, 170, 200, 145, 178, 175, 200, 142, 170, 195, 140, 175, 175, 200, 142, 170, 190 });
// 参数设置
var learning_rate = 0.0001f;
var training_epochs = 1000;
var display_step = 50;
// 模型参数
var W = tf.Variable(tf.zeros((3, 1)), name: "weight");
var b = tf.Variable(0.0f, name: "bias");
// 线性回归模型
var pred = tf.add(tf.matmul(tf.concat(new[] { x1, x2, x3 }, axis: 0), W), b);
// 均方误差
var cost = tf.reduce_mean(tf.pow(pred - y, 2));
// 梯度下降优化器
var optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost);
// 初始化所有变量
var init = tf.global_variables_initializer();
// 创建会话
using (var sess = tf.Session())
{
sess.run(init);
// 训练模型
for (var epoch = 0; epoch < training_epochs; epoch++)
{
sess.run(optimizer);
if ((epoch + 1) % display_step == 0)
{
var c = sess.run(cost);
Console.WriteLine($"Epoch: {epoch + 1}, cost={c}");
}
}
Console.WriteLine("Optimization Finished!");
// 输出训练后的模型参数
var w = sess.run(W);
var b_val = sess.run(b);
Console.WriteLine($"W={w}");
Console.WriteLine($"b={b_val}");
}
}
}
}
```
在这个示例中,我们使用三个特征(x1、x2、x3)来预测一个目标值(y),并且使用梯度下降算法来优化模型参数。在训练过程中,我们输出了每一轮迭代的损失函数值,并在训练完成后输出了最终的模型参数。
阅读全文