首页 > Windows开发 > 详细

基于tensorflow2 keras的API函数式调用 完成线性回归

时间:2021-06-24 22:26:25      阅读:17      评论:0      收藏:0      [点我收藏+]
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

# 定义数据数量
xdata = []
ydata = []
# 生成数据
xdata = np.linspace(1., 3., 10)  # 线性等分生成10个数据
# 拟合 y = a*x + b 的线性回归函数
# 定义 a=0.3,b=0.7,加上随机噪声
ydata = [0.3 * v + 0.7 + np.random.normal(0.0, 0.05) for v in xdata]

plt.scatter(xdata, ydata)
plt.show()

# 将数组转换为tensorflow可识别的 张量 格式
x = tf.convert_to_tensor(xdata)
y = tf.convert_to_tensor(ydata)
# 使用顺序模型,自己搭建模型

model = tf.keras.Sequential()
# 添加Dense层,建立回归模型,搭建一个[1, 3, 1]的BP神经网络
model.add(tf.keras.layers.Dense(3, activation=relu, input_shape=(1,)))
model.add(tf.keras.layers.Dense(1, ))

# 查看模型结构
model.summary()

# 编译模型
model.compile(
    optimizer=SGD,
    loss=mse)

# 如果要看每一次训练的具体情况,修改 verbose=1
history = model.fit(x, y,
                    epochs=1000,
                    verbose=0,
                    validation_split=0.2
                    )

# 用数据进行预测
xtest = tf.linspace(2., 3., 3)
y_pre = model.predict(xtest)
print(输入的x数据为:, xtest.numpy())
print(预测的结果为:, y_pre)

# 画拟合出来的曲线
fit_x_line = tf.linspace(1., 3., 100)
fit_y_line = model.predict(fit_x_line)
plt.plot(fit_x_line, fit_y_line, color=red)
plt.scatter(xdata, ydata)
plt.show()

# 画训练集和测试集的loss曲线
train_loss = np.array(history.history[loss])
val_loss = np.array(history.history[val_loss])
epoch = np.array(history.epoch)

train_line, = plt.plot(epoch, train_loss)
val_line, = plt.plot(epoch, val_loss)
plt.legend(handles=[train_line, val_line], labels=[train_loss, val_loss])
plt.xlabel(epoch)
plt.ylabel(loss)
plt.show()

技术分享图片技术分享图片

基于tensorflow2 keras的API函数式调用 完成线性回归

原文:https://www.cnblogs.com/didiao-xiaoxuan/p/14927435.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!