帮我用tensorflow2.12.0写cnn代码,用于拟合两组数据,要有测试后的拟合曲线图形输出
时间: 2024-05-10 18:14:17 浏览: 77
tensorflow-2.12.0-cp310-cp310-manylinux-2-17-x86-64.zip
好的,以下是一个简单的CNN代码示例,用于拟合两组数据:
```
import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
# 生成两组数据
x1 = np.random.normal(2, 0.5, 100)
y1 = np.random.normal(1, 0.2, 100)
x2 = np.random.normal(4, 0.5, 100)
y2 = np.random.normal(3, 0.2, 100)
# 将两组数据合并成一个数组
x = np.concatenate((x1, x2), axis=0)
y = np.concatenate((y1, y2), axis=0)
# 将数据转换为矩阵形式
x = x.reshape(-1, 1)
y = y.reshape(-1, 1)
# 构建CNN模型
model = tf.keras.models.Sequential([
tf.keras.layers.Conv1D(filters=32, kernel_size=3, activation='relu', input_shape=(1, 1)),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(1)
])
# 编译模型
model.compile(optimizer='adam', loss='mse')
# 训练模型
history = model.fit(x, y, epochs=100)
# 生成测试数据
test_x = np.arange(0, 6, 0.1).reshape(-1, 1)
# 使用模型进行预测
test_y = model.predict(test_x)
# 绘制拟合曲线图形
plt.plot(x, y, 'o', label='data')
plt.plot(test_x, test_y, label='fitting curve')
plt.legend()
plt.show()
```
在运行完上述代码之后,会生成一个拟合曲线图形的输出。你可以根据自己的需要修改模型的参数和训练次数来得到更好的拟合效果。
阅读全文