当前位置:网站首页>使用tensorflow2创建神经网络

使用tensorflow2创建神经网络

2022-06-23 11:09:00 河北一帆

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt


class NN:
    def __init__(self):
        # 创建一个隐藏层的神经网络模型
        self.model = tf.keras.Sequential()
        self.model.add(tf.keras.layers.Dense(10, activation='relu'))
        self.model.add(tf.keras.layers.Dense(1, activation='relu'))
        self.model.build((None, 2))     # 2表示 input是2维

    def output(self, x):
        return self.model(x)

    def train(self, x, y):
        opt = tf.keras.optimizers.Adam()    # Adam加速算法
        loss = lambda: tf.reduce_mean(tf.square(y - self.output(x)))    # 均方误差损失函数
        print(tf.reduce_mean(tf.square(y - self.output(x))).numpy())
        opt.minimize(loss, self.model.trainable_variables)


if __name__ == "__main__":
    nn = NN()
    # 训练集
    x = np.float32(np.random.uniform(0, 1, size=(100, 1)))
    y = np.float32(np.random.uniform(0, 1, size=(100, 1)))
    z = 3 * x + y
    xx = np.hstack((x, y))
    for i in range(1000):
        nn.train(xx, z)

    # 测试集
    x_verify = np.float32(np.random.uniform(0, 1, size=(100, 1)))
    y_verify = np.float32(np.random.uniform(0, 1, size=(100, 1)))
    z_verify = 3 * x_verify + y_verify
    xx_verify = np.hstack((x_verify, y_verify))
    z_ = nn.output(xx_verify).numpy()   # Tensor张量转成numpy array

    plt.plot(z_verify)
    plt.plot(z_)
    plt.show()

tensorflow官方文档:Module: tf  |  TensorFlow Core v2.9.1

原网站

版权声明
本文为[河北一帆]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_41816368/article/details/125333141