tensorflow实现二维平面模拟三维数据教程

【1.准备工作】

在开始使用 tensorflow 实现二维平面模拟三维数据之前,我们需要先进行以下的准备工作:

  • 安装 TensorFlow
  • 导入相关的库和模块
  • 准备数据

【2.导入相关库和模块】

我们需要导入以下的库和模块:

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

其中,tensorflow 是我们需要使用的深度学习框架,numpy 是一个科学计算库,matplotlib.pyplot 则是数据可视化的工具包。

【3.生成数据】

在这个示例中,我们需要生成一个二维平面内的多个点,每个点都对应一个三维坐标 (x, y, z)。我们可以使用 numpy 库的 random 函数来生成这些点:

n_samples = 1000
x_values = np.random.normal(0.0, 0.55, [n_samples, 1])
y_values = np.random.normal(0.0, 0.55, [n_samples, 1])
z_values = np.sin(x_values) + np.cos(y_values)

其中,n_samples 指定了生成的点的个数,np.random.normal() 用于生成服从正态分布的随机数,在这里生成了 x 和 y 坐标的值。z 坐标则是根据 x 和 y 坐标计算得到的。在这个示例中,我们使用了 sin 和 cos 两个函数来生成 z 坐标的值。

【4.构建模型】

接下来,我们需要构建一个深度学习模型来学习这些点的规律。在这个示例中,我们使用的是一个简单的神经网络模型。

input_layer = tf.keras.layers.Input(shape=(2,))
hidden_layer = tf.keras.layers.Dense(units=50, activation=tf.keras.activations.relu)(input_layer)
output_layer = tf.keras.layers.Dense(units=1)(hidden_layer)

model = tf.keras.models.Model(inputs=input_layer, outputs=output_layer)

其中,输入层包含了 2 个神经元,即 x 和 y 坐标。隐层包含了 50 个神经元,并使用 relu 激活函数。输出层包含了一个神经元,用于预测对应的 z 坐标值。

【5.训练模型】

构建好模型之后,我们需要将生成的数据集分为训练集和测试集,并开始训练模型:

train_size = int(n_samples * 0.8)

train_x, test_x = x_values[:train_size], x_values[train_size:]
train_y, test_y = y_values[:train_size], y_values[train_size:]
train_z, test_z = z_values[:train_size], z_values[train_size:]

model.compile(optimizer=tf.keras.optimizers.Adam(), loss=tf.keras.losses.MeanSquaredError())
history = model.fit(x=[train_x, train_y], y=train_z, batch_size=32, epochs=100, verbose=0, validation_split=0.2)

plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('Model loss')
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.legend(['Train', 'Validation'], loc='upper left')
plt.show()

在这里,我们使用了 Adam 优化器和均方误差作为损失函数进行训练。同时,我们还使用了 20% 的训练数据作为验证集,得到了一个训练历史的结果。

【6.预测结果】

最后,我们可以使用训练好的模型对测试集进行预测,并将预测结果可视化:

predictions = model.predict([test_x, test_y])

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(test_x, test_y, test_z, c='b', marker='o', label='Real points')
ax.scatter(test_x, test_y, predictions, c='r', marker='o', label='Predicted points')
ax.legend()
plt.show()

在这里,我们使用了 matplotlib 库中的 3D 散点图来可视化真实点和预测点的对比情况。

【示例二】

【1.准备工作】

在开始使用 tensorflow 实现二维平面模拟三维数据之前,我们需要先进行以下的准备工作:

  • 安装 TensorFlow
  • 导入相关的库和模块
  • 准备数据

【2.导入相关库和模块】

我们需要导入以下的库和模块:

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

其中,tensorflow 是我们需要使用的深度学习框架,numpy 是一个科学计算库,matplotlib.pyplot 则是数据可视化的工具包。

【3.生成数据】

在这个示例中,我们需要生成一个二维平面内的多个点,每个点都对应一个三维坐标 (x, y, z)。我们可以使用 numpy 库的 random 函数来生成这些点:

n_samples = 1000
x_values = np.random.normal(0.0, 0.55, [n_samples, 1])
y_values = np.random.normal(0.0, 0.55, [n_samples, 1])
z_values = np.sin(np.sqrt(x_values ** 2 + y_values ** 2)) + np.random.normal(0, 0.05, [n_samples, 1])

其中,n_samples 指定了生成的点的个数,np.random.normal() 用于生成服从正态分布的随机数,在这里生成了 x 和 y 坐标的值。z 坐标则是根据 x 和 y 坐标计算得到的。在这个示例中,我们使用了 sin 函数来生成 z 坐标的值。

【4.构建模型】

接下来,我们需要构建一个深度学习模型来学习这些点的规律。在这个示例中,我们使用的是一个简单的神经网络模型。

input_layer = tf.keras.layers.Input(shape=(2,))
hidden_layer_1 = tf.keras.layers.Dense(units=50, activation=tf.keras.activations.relu)(input_layer)
hidden_layer_2 = tf.keras.layers.Dense(units=25, activation=tf.keras.activations.relu)(hidden_layer_1)
output_layer = tf.keras.layers.Dense(units=1)(hidden_layer_2)

model = tf.keras.models.Model(inputs=input_layer, outputs=output_layer)

其中,输入层包含了 2 个神经元,即 x 和 y 坐标。隐层包含了 50 个神经元和 25 个神经元,并使用 relu 激活函数。输出层包含了一个神经元,用于预测对应的 z 坐标值。

【5.训练模型】

构建好模型之后,我们需要将生成的数据集分为训练集和测试集,并开始训练模型:

train_size = int(n_samples * 0.8)

train_x, test_x = x_values[:train_size], x_values[train_size:]
train_y, test_y = y_values[:train_size], y_values[train_size:]
train_z, test_z = z_values[:train_size], z_values[train_size:]

model.compile(optimizer=tf.keras.optimizers.Adam(), loss=tf.keras.losses.MeanSquaredError())
history = model.fit(x=[train_x, train_y], y=train_z, batch_size=32, epochs=100, verbose=0, validation_split=0.2)

plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('Model loss')
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.legend(['Train', 'Validation'], loc='upper left')
plt.show()

在这里,我们使用了 Adam 优化器和均方误差作为损失函数进行训练。同时,我们还使用了 20% 的训练数据作为验证集,得到了一个训练历史的结果。

【6.预测结果】

最后,我们可以使用训练好的模型对测试集进行预测,并将预测结果可视化:

predictions = model.predict([test_x, test_y])

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(test_x, test_y, test_z, c='b', marker='o', label='Real points')
ax.scatter(test_x, test_y, predictions, c='r', marker='o', label='Predicted points')
ax.legend()
plt.show()

在这里,我们使用了 matplotlib 库中的 3D 散点图来可视化真实点和预测点的对比情况。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:tensorflow实现二维平面模拟三维数据教程 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • 深度学习_1_Tensorflow_2_数据_文件读取

    队列和线程 文件读取, 图片处理 问题:大文件读取,读取速度, 在tensorflow中真正的多线程 子线程读取数据 向队列放数据(如每次100个),主线程学习,不用全部数据读取后,开始学习 队列与对垒管理器,线程与协调器 dequeue() 出队方法 enqueue(vals,name=None) 入队方法 enqueue_many(vals,name=N…

    tensorflow 2023年4月6日
    00
  • Ubuntu系统下Bazel编译Tensorflow环境

       编写此文主要为了介绍在Ubuntu16.04上搭建Tensorflow-lite编译环境,涉及目标硬件为Armv7架构,8核Cortex-A7。    1、开发环境介绍:      OS:Ubuntu16.04 64位      目标平台:Armv7      交叉工具链:gcc-linaro-arm-linux-gnueabihf-4.9-2014.…

    tensorflow 2023年4月7日
    00
  • Tensorflow中的Seq2Seq全家桶

    原文链接:https://zhuanlan.zhihu.com/p/47929039 Seq2Seq 模型顾名思义,输入一个序列,用一个 RNN (Encoder)编码成一个向量 u,再用另一个 RNN (Decoder)解码成一个序列输出,且输出序列的长度是可变的。用途很广,机器翻译,自动摘要,对话系统,还有上一篇文章里我用来做多跳问题的问答,只要是序列对…

    2023年4月6日
    00
  • Python TensorFlow深度学习回归代码:DNNRegressor

    本文介绍基于Python语言中TensorFlow的tf.estimator接口,实现深度学习神经网络回归的具体方法~   本文介绍基于Python语言中TensorFlow的tf.estimator接口,实现深度学习神经网络回归的具体方法。 目录 1 写在前面 2 代码分解介绍 2.1 准备工作 2.2 参数配置 2.3 原有模型删除 2.4 数据导入与数…

    tensorflow 2023年4月5日
    00
  • 在Linux服务器非root权限下搭建TensorFlow框架(Anaconda)

    今天终于动手折腾实验室的服务器啦!由于权限原因,只能在自己的路径下安装TensorFlow。 1. 下载安装Anaconda 官网下载地址:https://www.anaconda.com/download/#linux 下载对应版本,上传到服务器,执行: bash Anaconda3-2018.12-Linux-x86_64.sh 名称改成自己的相应版本。…

    2023年4月8日
    00
  • Dive into TensorFlow系列(1)-静态图运行原理

    接触过TensorFlow v1的朋友都知道,训练一个TF模型有三个步骤:定义输入和模型结构,创建tf.Session实例sess,执行sess.run()启动训练。不管是因为历史遗留代码或是团队保守的建模规范,其实很多算法团队仍在大量使用TF v1进行日常建模。我相信很多算法工程师执行sess.run()不下100遍,但背后的运行原理大家是否清楚呢?不管你…

    2023年4月8日
    00
  • Tensorflow暑期实践——基于单个神经元的手写数字识别

    版权说明:浙江财经大学专业实践深度学习tensorflow——齐峰 目录 1  基于单个神经元的手写数字识别 2  本章内容介绍 3.1.1  单个神经元的网络模型 3.1.2  激活函数3.2  载入数据3.3  构建模型3.4  训练模型3.5  评估模型3.6  进行预测4  Tensorflow实现基于单隐层神经网络的手写数字识别5  Tensorf…

    2023年4月8日
    00
  • tensorflow学习之(七)使用tensorboard 展示神经网络的graph/histogram/scalar

    # 创建神经网络, 使用tensorboard 展示graph/histogram/scalar import tensorflow as tf import numpy as np import matplotlib.pyplot as plt # 若没有 pip install matplotlib # 定义一个神经层 def add_layer(inp…

    2023年4月6日
    00
合作推广
合作推广
分享本页
返回顶部