TensorFlow 实现曲线拟合

本篇播客利用了TensorFlow实现了曲线y = kx + b中参数k,b的求解,代码如下

import tensorflow as tf
import numpy as np
import os

os.environ["TF_CPP_MIN_LOG_LEVEL"] = '2'  # 只显示 warning 和 Error
x_data = np.random.rand(100)  # 生成100个随机数
y_data = x_data * 0.2 + 0.4  # 得到真值y

k = tf.Variable(0.)  # 定义变量 float
b = tf.Variable(0.)  # 定义变量 float

y = k * x_data + b  # 曲线模型

loss = tf.reduce_mean(tf.square(y - y_data))  # 损失函数
optimizer = tf.train.GradientDescentOptimizer(0.01)  # 定义一个优化器为优化Loss,指定学习率为0.01
train = optimizer.minimize(loss)  # 优化Loss
# 至此计算图已经定义好了,后面是初始化及在session中启动图

init = tf.global_variables_initializer()  # 只要使用到变量,就要加上这句,初始化所有变量

with tf.Session() as sess:
    sess.run(init)  # 只要存在变量,必须先在session中运行初始化变量
    for step in range(1001):
        sess.run(train)
        if step % 100 == 0:
            print(step, sess.run([k, b]))
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于TensorFlow的欠拟合和过拟合的Python示例: 首先,我们需要导入必要的库和数据集: ```python import tensorflow as tf from tensorflow import keras import numpy as np # 加载数据集 (x_train, y_train), (x_test, y_test) = keras.datasets.boston_housing.load_data(seed=42) ``` 接下来,我们需要对数据进行预处理: ```python # 标准化数据 mean = x_train.mean(axis=0) std = x_train.std(axis=0) x_train = (x_train - mean) / std x_test = (x_test - mean) / std ``` 然后,我们可以定义一个函数来构建模型: ```python def build_model(): model = keras.Sequential([ keras.layers.Dense(64, activation='relu', input_shape=(x_train.shape[1],)), keras.layers.Dense(64, activation='relu'), keras.layers.Dense(1) ]) optimizer = tf.keras.optimizers.RMSprop(0.001) model.compile(loss='mse', optimizer=optimizer, metrics=['mae']) return model ``` 接下来,我们可以训练模型并绘制训练和验证的损失曲线: ```python # 构建模型 model = build_model() # 训练模型 history = model.fit(x_train, y_train, epochs=500, validation_split=0.2, verbose=0) # 绘制训练和验证的损失曲线 import matplotlib.pyplot as plt def plot_history(history): plt.figure() plt.xlabel('Epoch') plt.ylabel('Mean Abs Error [$1000]') plt.plot(history.epoch, np.array(history.history['mae']), label='Train Loss') plt.plot(history.epoch, np.array(history.history['val_mae']), label = 'Val loss') plt.legend() plt.ylim([0,5]) plt.show() plot_history(history) ``` 最后,我们可以使用测试集评估模型的性能: ```python # 使用测试集评估模型的性能 test_loss, test_mae = model.evaluate(x_test, y_test, verbose=0) print('Test MAE: ${:,.2f}'.format(test_mae * 1000)) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值