TensorFlow 线性回归 Sequential

TensorFlow 线性回归 Sequential

import numpy as np
import tensorflow as tf
import keras
import numpy as np
import matplotlib.pyplot as plt
from keras.layers import Dense
from keras.models import Sequential
from keras.optimizers import SGD
from keras.layers import Activation

# 1 创建数据集
x_data = np.random.rand(200)  # 生成数据 200个0-1的随机点
noise = np.random.normal(0, 0.01, x_data.shape)  # 生成随机噪声 (均值为0,标准差为0.01)
y_data = x_data * 2 + noise  # 创建目标值

x_train, y_train = x_data[:160], x_data[:160]  # 前160组数据为训练数据集
x_test, y_test = x_data[160:], x_data[160:]  # 后40组数据为测试数据集

'''
plt.scatter(x_data, y_data, c='r', marker='x')
plt.xlabel('x_data')
plt.ylabel('y_data')
plt.show()
'''

# 2 构建模型
# 使用Sequential模型
model = tf.keras.Sequential()
# 增加一个Dense全连接层。在模型中添加一个全连接层 units输出的维度(y) input_dim输入的维度(x)
model.add(Dense(units=1, input_dim=1))
# 模型的编译,优化器为sgd即随机梯度下降,损失函数选择mse即均方误差。
model.compile(optimizer='sgd', loss='mse')
# 3 模型训练
for i in range(2001):  # 训练2000次 batch 批处理
    # 训练的损失
    train_cost = model.train_on_batch(x_train, y_train)
    if i % 100 == 0:
        print('train_cost--', train_cost)
# 4 模型预测
y_pred = model.predict(x_train)
plt.scatter(x_train, y_train)
plt.plot(x_train, y_pred, 'r-', lw=3)  # lw 线条粗细
plt.show()

 

发表回复

您的电子邮箱地址不会被公开。