写一段python代码:用蒙特卡罗模拟场景,然后用神经网络进行训练,最后求得近似函数值
时间: 2024-03-26 07:39:48 浏览: 82
好的,以下是一段简单的 Python 代码,用于演示蒙特卡罗模拟和神经网络训练的基本流程:
```python
import numpy as np
import random
# 生成随机数据
def generate_data(num_samples):
x = np.random.uniform(0, 1, size=(num_samples, 2))
y = np.zeros((num_samples, 1))
for i in range(num_samples):
if x[i][0] ** 2 + x[i][1] ** 2 <= 1:
y[i] = 1
return x, y
# 模拟场景,计算 Pi 的近似值
def monte_carlo_pi(num_samples):
num_inside = 0
for i in range(num_samples):
x, y = random.uniform(0, 1), random.uniform(0, 1)
if x ** 2 + y ** 2 <= 1:
num_inside += 1
return 4 * num_inside / num_samples
# 构建神经网络
from keras.models import Sequential
from keras.layers import Dense
model = Sequential()
model.add(Dense(16, input_dim=2, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# 编译模型
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# 生成训练数据
x_train, y_train = generate_data(10000)
# 训练模型
model.fit(x_train, y_train, epochs=50, batch_size=32, verbose=1)
# 用模型进行预测
x_test = np.random.uniform(0, 1, size=(100, 2))
y_test = np.zeros((100, 1))
for i in range(100):
if x_test[i][0] ** 2 + x_test[i][1] ** 2 <= 1:
y_test[i] = 1
score = model.evaluate(x_test, y_test, verbose=0)
# 输出结果
print("Monte Carlo simulation result:", monte_carlo_pi(1000000))
print("Neural network approximation result:", score[1])
```
这段代码首先生成了一些随机数据,并用蒙特卡罗模拟方法计算了 $\pi$ 的近似值。然后,利用这些随机数据来训练一个简单的神经网络,用于近似函数的拟合。最后,用模型进行预测,并输出蒙特卡罗模拟结果和神经网络近似结果。
阅读全文