CNN异常识别代码
时间: 2023-09-28 14:10:59 浏览: 64
人脸识别CNN,人脸识别cnn模型,matlab源码.zip
5星 · 资源好评率100%
以下是一个简单的CNN异常检测代码示例,用于检测图像中的异常:
```python
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
# 加载数据集
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
# 对数据集进行预处理
x_train = x_train.reshape(x_train.shape[0], 28, 28, 1).astype('float32') / 255.
x_test = x_test.reshape(x_test.shape[0], 28, 28, 1).astype('float32') / 255.
# 创建CNN模型
model = tf.keras.Sequential([
tf.keras.layers.Conv2D(32, (3, 3), activation='relu', padding='same', input_shape=(28, 28, 1)),
tf.keras.layers.MaxPooling2D((2, 2), padding='same'),
tf.keras.layers.Conv2D(64, (3, 3), activation='relu', padding='same'),
tf.keras.layers.MaxPooling2D((2, 2), padding='same'),
tf.keras.layers.Conv2D(128, (3, 3), activation='relu', padding='same'),
tf.keras.layers.MaxPooling2D((2, 2), padding='same'),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(1, activation='sigmoid')
])
# 编译模型
model.compile(optimizer='adam', loss='binary_crossentropy')
# 训练模型
model.fit(x_train, y_train, epochs=5, batch_size=64, validation_data=(x_test, y_test))
# 预测测试集并计算准确率
predictions = model.predict(x_test)
accuracy = np.mean(np.round(predictions) == y_test)
print('Accuracy: %.2f%%' % (accuracy * 100))
# 绘制预测结果
plt.figure(figsize=(10, 10))
for i in range(25):
plt.subplot(5, 5, i+1)
plt.xticks([])
plt.yticks([])
plt.grid(False)
plt.imshow(x_test[i], cmap=plt.cm.binary)
if np.round(predictions[i]) != y_test[i]:
plt.xlabel('Anomaly', fontsize=12, color='red')
else:
plt.xlabel('Normal', fontsize=12, color='green')
plt.show()
```
在这个例子中,我们使用了MNIST数据集作为训练和测试数据,并使用了一个简单的CNN模型来检测异常。我们先将数据集预处理为28x28的图像,并将像素值归一化到0到1之间。然后创建了一个包含三个卷积层和一个全连接层的CNN模型,使用sigmoid激活函数输出一个二进制值来表示图像是否异常。在训练过程中,我们使用二元交叉熵作为损失函数,并使用Adam优化器进行优化。在预测测试集时,我们计算了模型的准确率,并在图像上显示了预测结果,使用绿色标记正常图像,红色标记异常图像。
阅读全文