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日

相关文章

  • tensorflow学习之路—简单的代码

    import numpyimport tensorflow as tf #自己创建的数据x_data = numpy.random.rand(100).astype(numpy.float32)#创建具有100个元素的数组y_data = x_data*0.1+0.3#具有自动遍历的功能   ##设置神经网络的结构###Weights = tf.Variab…

    tensorflow 2023年4月6日
    00
  • No module named ‘tensorflow.contrib’

    控制台:pip install tensorflow 发现自己安装过,且版本2.4.1 搜索发现自己的python3.8版本无对应 tensorflow,故删除3.8版本,下载3.7版本【百度有教程】。 对应python3.7版本的tensorflow我下载的是1.14.0。其他应该也可,官网有对应表。 但是速度慢,毕竟使用pip下载。故换镜像下载: 修改为…

    tensorflow 2023年4月6日
    00
  • Jetson nano 安装 TensorFlow

    高级程序 工程师 2 人赞同了该文章 安装依赖软件包 sudo apt-get install python3-pip 执行一下命令,修改文件中内容,如果不修改,后面依赖包无法安装 python3 -m pip install –upgrade pip sudo vim /usr/bin/pip3 源文件 from pip import main if _…

    tensorflow 2023年4月6日
    00
  • TensorFlow Session使用的两种方法小结

    在 TensorFlow 中,Session 是一个非常重要的概念,它用于执行 TensorFlow 的计算图。TensorFlow 提供了两种方法来使用 Session,分别是使用 with 语句和使用 Session() 函数。下面是 TensorFlow Session 使用的两种方法小结的详细攻略。 1. 使用 with 语句创建 Session 使…

    tensorflow 2023年5月16日
    00
  • tensorflow模型继续训练 fineturn实例

    TensorFlow模型继续训练finetune实例 在机器学习中,模型的训练是一个持续的过程。有时候,我们需要在已经训练好的模型上继续训练,以提高模型的准确性。这个过程被称为finetune。本攻略将介绍如何在TensorFlow中进行模型finetune,并提供两个示例。 示例1:在已经训练好的模型上继续训练 以下是示例步骤: 导入必要的库。 pytho…

    tensorflow 2023年5月15日
    00
  • Python 实现训练集、测试集随机划分

    那么让我们来讲解一下“Python 实现训练集、测试集随机划分”的完整攻略吧。 什么是训练集与测试集 在机器学习领域,我们经常会用到训练集和测试集。训练集是用来训练机器学习算法模型的数据集,而测试集则是用来验证模型的准确性和泛化能力的数据集。 通常情况下,训练集和测试集是从同一个数据集中划分而来的,其中训练集占据了大部分数据,用来训练模型;而测试集则是用来检…

    tensorflow 2023年5月18日
    00
  • pytorch和tensorflow计算Flops和params的详细过程

    PyTorch和TensorFlow计算Flops和Params的详细过程 在深度学习中,Flops和Params是评估模型复杂度和计算量的重要指标。Flops指的是模型在进行一次前向传播时需要执行的浮点运算次数,而Params指的是模型中需要学习的参数数量。本攻略将介绍如何使用PyTorch和TensorFlow计算Flops和Params,并提供两个示例…

    tensorflow 2023年5月15日
    00
  • tensorflow_知识点

    1. tensorflow动态图和静态图切换   动态图是Tensorflow1.3版本之后出现的,到1.11版本时,已经比较完善。在2.0之后版本为默认工作方式。        tensorflow2.X 关闭动态图的函数  tf.compat.v1.disable_v2_behavior         启用动态图的函数: tf.compat.v1.en…

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