在Jupyter Notebook运行cnn代码
时间: 2025-02-04 14:15:46 浏览: 39
### 如何在 Jupyter Notebook 中运行卷积神经网络 (CNN) 代码
为了在 Jupyter Notebook 中成功运行 CNN 代码,环境配置和数据准备至关重要。以下是详细的说明:
#### 安装必要的库
确保安装了 TensorFlow 或 PyTorch 等深度学习框架以及其它辅助工具如 Keras 和 Matplotlib。
```bash
pip install tensorflow keras matplotlib numpy scikit-image opencv-python
```
#### 导入所需模块
导入用于构建模型、处理图像和其他操作所需的 Python 库。
```python
import os
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import matplotlib.pyplot as plt
import numpy as np
```
#### 数据预处理
使用 `ImageDataGenerator` 对输入的数据集进行增强并创建训练与验证生成器。
```python
train_datagen = ImageDataGenerator(rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1./255)
training_set = train_datagen.flow_from_directory('dataset/training_set',
target_size=(64, 64),
batch_size=32,
class_mode='binary')
validation_set = test_datagen.flow_from_directory('dataset/validation_set',
target_size=(64, 64),
batch_size=32,
class_mode='binary')
```
#### 构建 CNN 模型结构
定义一个简单的 CNN 结构来执行二分类任务。
```python
model = Sequential()
# 添加第一个卷积层
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=[64, 64, 3]))
model.add(MaxPooling2D(pool_size=(2, 2)))
# 添加第二个卷积层
model.add(Conv2D(64, kernel_size=(3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
# 展平层
model.add(Flatten())
# 全连接层
model.add(Dense(units=128, activation='relu'))
# 输出层
model.add(Dense(units=1, activation='sigmoid'))
```
#### 编译模型
指定损失函数、优化算法及评估指标。
```python
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
```
#### 训练模型
利用之前设置好的数据生成器来进行模型训练过程,并记录下历史信息以便后续分析。
```python
history = model.fit(training_set,
steps_per_epoch=len(training_set),
epochs=30,
validation_data=validation_set,
validation_steps=len(validation_set))
```
#### 可视化结果
绘制图表展示训练期间的准确性变化趋势。
```python
plt.plot(history.history['accuracy'], label='Train Accuracy')
plt.plot(history.history['val_accuracy'], label='Validation Accuracy')
plt.title('Model accuracy over time')
plt.ylabel('Accuracy')
plt.xlabel('Epoch')
plt.legend(loc='upper left')
plt.show()
plt.plot(history.history['loss'], label='Train Loss')
plt.plot(history.history['val_loss'], label='Validation Loss')
plt.title('Model loss over time')
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.legend(loc='upper left')
plt.show()
```
通过上述步骤,在 Jupyter Notebook 上可以顺利搭建起一套完整的 CNN 流程[^2]。
阅读全文
相关推荐


















