【Python】AI 数据预测 tensorflow

TensorFlow官方文档

TODO:

1、保存并复用训练好的模型

2、loss值为nan

3、matlab 根据一个曲线 求出此曲线的函数表达式

"""
AI数据预测
参考:https://baijiahao.baidu.com/s?id=1659970648237693575&wfr=spider&for=pc

备注:
1、NumPy是Python用于科学计算的基本包
2、TensorFlow是一个开源的机器学习框架,开发人员可以轻松构建和部署机器学习支持的应用程序

TODO:
1、预测后的模型怎么保存(下次直接使用模型 就不用再次训练了)
2、当训练数据过多 过大时 loss值会为nan(未解决)
"""

import tensorflow as tf
import numpy as np
from tensorflow import keras


class JarAiUtil:
    def __init__(self):
        pass


if __name__ == '__main__':
    # 创建一个具有1层的神经网络,该层具有1个神经元,其输入形状为1
    model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])])
    # 使用优化器和损失函数编译机器学习模型
    # 损失函数将猜测的答案与已知的正确答案进行比较,并衡量其结果的好坏。本文中我们使用一个简单的损失函数,即mean_squared_error
    # 该机器学习模型还需要优化器函数。根据损失函数的运行情况,它将尝试使损失最小化
    model.compile(optimizer='sgd', loss='mean_squared_error')
    # 现在,我们已经编译了模型,我们可以打印模型摘要并查看图。使用以下语句来打印摘要。
    print(model.summary())

    # 现在让我们将模型拟合到一些训练数据上。由于我们要学习的关系非常简单,因此仅需几个实例就足以训练模型
    # epochs等于3000意味着模型将尝试3000次迭代优化它的权重
    # 调用model.fit()我们可以看到训练的输出。请注意,随着epochs数的增加,损失不断减少(loss的值)
    xs = np.array(
        [1.0, 2.0, 3.5, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0], dtype=float)
    ys = np.array(
        [1.0, 3.0, 6.0, 7.0, 9.0, 11.0, 13.0, 15.0, 17.0, 19.0], dtype=float)
    model.fit(xs, ys, epochs=3000)

    # 最后,让我们使用模型执行预测。使用以下语句检查输入x = 10.0的输出
    print('y = 2 * x - 1 当x=10.0时 预测y值:', model.predict([10.0]))  # 输出:y = 2 * x - 1 当x=10.0时 预测y值: [[18.999996]]  (可以看到,逼近函数输出的值非常接近19.0)