提问人:Josue Oliva 提问时间:11/10/2023 更新时间:11/10/2023 访问量:66
神经网络插值
interpolation with neural networks
问:
假设你有这个数据集:
1.05 1.10 1.15 1.20 1.25
0.2 0.000 0.000 0.000 0.000 0.000
0.3 0.350 0.350 0.350 0.350 0.350
0.4 0.615 0.619 0.623 0.626 0.628
0.5 0.805 0.816 0.826 0.834 0.839
有没有办法使用神经网络进行插值,例如 0.389 和 1.168,而不仅仅是使用简单的插值或双线性插值?
答:
0赞
Sash Sinha
11/10/2023
#1
您可以使用 tf.keras。顺序
:
import os
import random
import numpy as np
import tensorflow as tf
# Set all random seeds for reproducibility on the same machine at least
RANDOM_SEED = 1
os.environ['PYTHONHASHSEED'] = str(RANDOM_SEED)
random.seed(RANDOM_SEED)
np.random.seed(RANDOM_SEED)
tf.random.set_seed(RANDOM_SEED)
# Data
x1 = np.array([1.05, 1.10, 1.15, 1.20, 1.25])
x2 = np.array([0.2, 0.3, 0.4, 0.5])
y = np.array([[0.000, 0.000, 0.000, 0.000, 0.000],
[0.350, 0.350, 0.350, 0.350, 0.350],
[0.615, 0.619, 0.623, 0.626, 0.628],
[0.805, 0.816, 0.826, 0.834, 0.839]])
X1_mesh, X2_mesh = np.meshgrid(x1, x2)
X = np.column_stack((X1_mesh.ravel(), X2_mesh.ravel()))
Y = y.ravel()
# Model
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(64, input_dim=2, activation='relu'))
model.add(tf.keras.layers.Dense(64, activation='relu'))
model.add(tf.keras.layers.Dense(1, activation='linear'))
model.compile(optimizer='adam', loss='mean_squared_error')
model.fit(X, Y, epochs=1000, verbose=0)
# Predict
new_point = np.array([[1.168, 0.389]])
predicted_value = model.predict(new_point)
print(predicted_value)
输出示例:
1/1 [==============================] - 0s 55ms/step
[[0.5972232]]
评论
0赞
Josue Oliva
11/10/2023
我有一个问题,如果你只想插值 0.2 和 1.168 怎么办?我刚刚在谷歌合作中测试了它,结果是否定的,这是为什么?
0赞
Sash Sinha
11/10/2023
在边界处,模型的性能可能更差。
0赞
Josue Oliva
11/10/2023
是的,你是对的,因为零会弹出,但如果你插值 0.3 怎么办?
0赞
Sash Sinha
11/10/2023
每个 0.2 的示例都是 0.000?
0赞
Josue Oliva
11/10/2023
你是对的,我没有注意到那部分,非常感谢你的回答,顺便说一句,我在 tensorflow 上遇到了问题,我的意思是安装它,你能帮帮我吗?我试过几次,但没有成功。
评论