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

yizhihongxing

【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二进制文件读取与tfrecords文件读取

    1、知识点 “”” TFRecords介绍: TFRecords是Tensorflow设计的一种内置文件格式,是一种二进制文件,它能更好的利用内存, 更方便复制和移动,为了将二进制数据和标签(训练的类别标签)数据存储在同一个文件中 CIFAR-10批处理结果存入tfrecords流程: 1、构造存储器 a)TFRecord存储器API:tf.python_i…

    tensorflow 2023年4月8日
    00
  • tensorflow.python.framework.errors_impl.UnknownError: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize,

    https://blog.csdn.net/zhangpeterx/article/details/89175991   因为我一开始是直接在Pycharm里安装的tensorflow-gpu库,个人感觉应该是缺少了相关的库安装导致的。故我使用conda再次安装一下tensorflow-gpu, conda install tensorflow-gpu 然后…

    tensorflow 2023年4月7日
    00
  • Tensorflow 安装

    Windows安装   0 操作系统win7, 64bit 1 官网下载python3.5以上的版本,exe文件默认选项安装即可 2 进入安装目录的Scripts文件夹,pip install tensorflow  或者 pip install –upgrade tensorflow -i https://pypi.douban.com/simple w…

    2023年4月8日
    00
  • Tensorflow中one_hot() 函数用法

    官网默认定义如下: one_hot(indices, depth, on_value=None, off_value=None, axis=None, dtype=None, name=None) 该函数的功能主要是转换成one_hot类型的张量输出。参数功能如下:  1)indices中的元素指示on_value的位置,不指示的地方都为off_value。…

    tensorflow 2023年4月6日
    00
  • TensorFlow学习笔记——cmd调用方法

    由于tensorflow支持最高的python的版本和anaconda自动配置的python最新版本并不兼容,故直接用常规的在终端键入“python”会出现问题。经过尝试对激活环境,调用的过程暂总结如下: 其中之一的方法如图:    大体语句思路可以总结为两部分:①激活tensorflow环境 ②找到所要执行文件的目录(两部分不分先后) 之后便可以开始执行模…

    2023年4月5日
    00
  • tensorflow(十七):数据的加载:map()、shuffle()、tf.data.Dataset.from_tensor_slices()

    一、数据集简介         二、MNIST数据集介绍    三、CIFAR 10/100数据集介绍        四、tf.data.Dataset.from_tensor_slices()    五、shuffle()随机打散    六、map()数据预处理              七、实战 import tensorflow as tf impor…

    tensorflow 2023年4月7日
    00
  • 关于Tensorflow使用CPU报错的解决方式

    在使用TensorFlow时,有时会出现使用CPU时的报错。本文将详细讲解解决这个问题的方法,并提供两个示例说明。 示例1:使用TensorFlow的GPU版本 如果您的计算机支持GPU,那么使用TensorFlow的GPU版本可能是解决CPU报错的最佳方法。以下是使用TensorFlow的GPU版本的示例代码: import tensorflow as t…

    tensorflow 2023年5月16日
    00
  • Windows下 Tensorflow安装问题: Could not find a version that satisfies the requirement tensorflow

      Tensorflow 需要 Python 3.5/3.6  64bit 版本: 具体的安装方式可查看:https://www.tensorflow.org/install/install_windows      命令提示符中输入 python 即可启动并查看当前版本:      查看具体的版本信息可输入: 1 python -v      下载新的64…

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