keras搭建CNN卷积神经网络模板

import keras
from keras.datasets import mnist
from keras import layers
from keras.utils import np_utils
from keras.optimizers import Adam
from keras.model import load_model
# 画出模型的结构

from keras.utils.vis_utils import plot_model
# 载入数据
(x_train, y_train), (x_test, y_test) = mnist.load_data()

# (60000,28,28)->(60000,28,28,1)
x_train = x_train.reshape(-1,28,28,1)/255.0
x_test = x_test.reshape(-1,28,28,1)/255.0

# 换为one_hot形式
y_train = np_utils.to_categorical(y_train, num_classes=10)
y_test = np_utils.to_categorical(y_test, num_classes=10)

# 定义模型
model = keras.Sequential()

'''
第一个卷积层
input_shape 输入平面
filters 卷积核/滤波器个数
kernel_size 卷积窗口大小
stride 步长
padding padding方式 same/valid
activation 激活函数
'''
model.add(layers.Convolution2D(input_shape=(28,28,1), filters=32, kernel_size=5,\
                               strides=1, padding='same', activation='relu'))
# 第一个池化层
model.add(layers.MaxPooling2D(pool_size=2, strides=2, padding='same'))
# 第二个卷积层
model.add(layers.Convolution2D(filters=64, kernel_size=5,\
                               strides=1, padding='same', activation='relu'))
# 第二个池化层
model.add(layers.MaxPooling2D(pool_size=2, strides=2, padding='same'))
# 把第二个池化层额输出扁平化
model.add(layers.Flatten())
# 第一个全连接层
model.add(layers.Dense(1024, activation='relu'))
# 第二个全连接层
model.add(layers.Dense(10, activation='softmax'))

# 定义优化器
adam = Adam(lr=0.001)

# 定义优化器,loss function, 训练过程中计算准确率
model.compile(optimizer=adam, loss='categorical_crossentropy', metrics=['acc'])

# 画出网络结构
plot_model(model, to_file='model21111111.png', show_shapes=True, show_layer_names='False', rankdir='TB')
# 训练模型
model.fit(x_train, y_train, batch_size=64, epochs=2)

# 保存模型
model = load_model('model1.h5')
# 评估模型
loss, accuracy = model.evaluate(x_test, y_test)
print("test loss:", loss)
print("test accuracy", accuracy)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
搭建CNN卷积神经网络)通常用于图像处理和计算机视觉任务,如图像分类、物体检测等。以下是构建一个基础CNN模型的基本步骤: 1. **导入库**: 使用Python编程语言,首先导入必要的深度学习库,如TensorFlow或PyTorch。 ```python import tensorflow as tf from tensorflow.keras import layers ``` 2. **数据预处理**: 加载和预处理图像数据,通常包括归一化、缩放和可能的数据增强。 ```python # 使用ImageDataGenerator进行数据增强 data_generator = ImageDataGenerator(rescale=1./255, shear_range=0.2, zoom_range=0.2) train_data = data_generator.flow_from_directory(train_dir, target_size=(img_height, img_width), batch_size=batch_size) ``` 3. **定义模型结构**: 使用`tf.keras.Sequential`创建一个序列模型,并添加卷积层(Conv2D)、池化层(MaxPooling2D)和全连接层(Dense)。 ```python model = tf.keras.Sequential([ layers.Conv2D(filters=32, kernel_size=(3, 3), activation='relu', input_shape=(img_height, img_width, channels)), layers.MaxPooling2D(pool_size=(2, 2)), layers.Conv2D(filters=64, kernel_size=(3, 3), activation='relu'), layers.MaxPooling2D(pool_size=(2, 2)), layers.Flatten(), layers.Dense(units=128, activation='relu'), layers.Dropout(0.5), layers.Dense(num_classes, activation='softmax') ]) ``` 4. **编译模型**: 设置损失函数、优化器和评价指标。 ```python model.compile(loss=tf.keras.losses.categorical_crossentropy, optimizer=tf.keras.optimizers.Adam(), metrics=['accuracy']) ``` 5. **训练模型**: 使用训练数据训练模型。 ```python history = model.fit(train_data, epochs=num_epochs, validation_data=val_data) ``` 6. **评估与保存**: 在验证集上评估模型性能,并在完成训练后保存模型。 ```python test_loss, test_acc = model.evaluate(test_data) model.save('my_cnn_model.h5') ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值