写一个利用卷积神经网络进行数据分类预测的代码,每一行带注释,并给出简单的数据集
时间: 2023-06-02 20:02:38 浏览: 43
# 导入需要的库
import tensorflow as tf
import numpy as np
# 定义数据集
# 假设有一个数据集,包含100个二维点(x,y)和它们对应的标签(0或1)
# 我们将数据集分为训练集和测试集
# 训练集有80个点,测试集有20个点
# 数据集中的点分别位于以(-2,-2)为左下角,(2,2)为右上角的四个象限内
# 标签为0的点在左下和右上两个象限内,标签为1的点在左上和右下两个象限内
train_data = np.random.rand(80, 2) * 4 - 2
train_labels = np.zeros(80)
train_labels[(train_data[:, 0] < 0) & (train_data[:, 1] < 0) | (train_data[:, 0] > 0) & (train_data[:, 1] > 0)] = 1
test_data = np.random.rand(20, 2) * 4 - 2
test_labels = np.zeros(20)
test_labels[(test_data[:, 0] < 0) & (test_data[:, 1] < 0) | (test_data[:, 0] > 0) & (test_data[:, 1] > 0)] = 1
# 定义卷积神经网络
model = tf.keras.Sequential([
tf.keras.layers.Input(shape=(2,)),
tf.keras.layers.Reshape((2, 1, 1)),
tf.keras.layers.Conv2D(filters=10, kernel_size=(2, 1), activation='relu'),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(1, activation='sigmoid')
])
# 编译模型
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])
# 训练模型
model.fit(train_data, train_labels, epochs=10, batch_size=8)
# 在测试集上测试模型
test_loss, test_acc = model.evaluate(test_data, test_labels)
print('Test accuracy:', test_acc)