0 介绍
本书名为 Physics-Based Deep Learning (基于物理的深度学习),意指将物理建模和数值模拟与基于人工神经网络的方法相结合。基于物理的深度学习的大方向代表了一个非常活跃、快速发展和令人兴奋的研究领域。
来源书籍:
A Teaser Example — Physics-based Deep Learning (physicsbaseddeeplearning.org)
1 寻找抛物线的反函数
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
# X-Data
N = 200
X = np.random.random(N)
# Generation Y-Data
sign = (- np.ones((N,)))**np.random.randint(2,size=N)
Y = np.sqrt(X) * sign
plt.scatter(X,Y,s=9,color='red')
# plt.show()
# Neural network
act = tf.keras.layers.ReLU()
nn_sv = tf.keras.models.Sequential([
tf.keras.layers.Dense(10, activation=act, input_shape=(1,)),
tf.keras.layers.Dense(10, activation=act),
tf.keras.layers.Dense(1,activation='linear')])
这段 Python 代码使用 TensorFlow 和 Keras 库来定义一个简单的神经网络模型。下面是逐行解释: 1. `import tensorflow as tf`: 首先,导入 TensorFlow 库,并用 `tf` 作为别名。 2. `act = tf.keras.layers.ReLU()`: 这一行创建了一个 ReLU(Rectified Linear Unit)激活函数对象,并将其赋值给变量 `act`。ReLU 是一种常用的激活函数,它将所有负值设为0,而正值保持不变,有助于解决神经网络中的梯度消失问题。 3. 接下来是一个 Keras 的 `Sequential` 模型定义,这是一个线性堆叠的神经网络层结构。 nn_sv = tf.keras.models.Sequential([ 4. `tf.keras.layers.Dense(10, activation=act, input_shape=(1,))`: 定义了第一个全连接(Dense)层,具有以下特性: - 输出节点数为 10。 - 使用之前定义的 ReLU 激活函数 `act`。 - 指定了输入形状为 `(1,)`,意味着这个层期望接收单个数值特征作为输入。 5. `tf.keras.layers.Dense(10, activation=act)`: 第二个全连接层,同样有 10 个输出节点,并使用 ReLU 激活函数。由于这是序列模型中的第二层,其输入形状会自动从前一层继承,因此不需要指定 `input_shape`。 6. `