卷积神经网络<一>keras创建多图输入CNN

keras中卷积神经网络的创建

 conv2d(
     filter=特征图的个数,也就是卷积核的个数,也就是神经网络中需要提取特征的数量。
     kernal_size=卷积核的大小
     strip=步长
     padding='valid' or 'same'
     input_shape=
     activate='relu'
 )
  • 其他的一些参数

image-20221120203027437

举个例子1:直接创建一个可用的卷积神经网络

创建CNN应该包含以下7步骤。

"""
@author:fuzekun
@file:cnn.py
@time:2022/11/16
@description: 卷积神经网络模型
"""

import keras

from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Activation,Dense,Flatten,Conv2D,MaxPooling2D
from keras.utils import np_utils

# 1.初始化
model = Sequential()
# 2.卷积层
model.add(Conv2D(filters=32, kernel_size=(3, 3), padding='same', input_shape=(28,28,1), activation='relu'))
# 3.池化层
model.add(MaxPooling2D(pool_size=(2,2)))
# 4. 图片拉平成向量
model.add(Flatten())
# 5. 全连接
model.add(Dense(n_hidden_1, activation='relu'))
# 6. 输出
model.add(Dense(n_classes, activation='softmax'))
# 7. 编译
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

举个例子2,创建三张图片作为输入的的的卷积神经网络

image-20221120203309296

def create_model(input_shape):
    """
    这里没有参数,应该有
    input_shape:
    kernal_size:
    pool_size:
    activation:
    optimizer:
    """
    def create_single_model() :
        # 1.建立卷积神经网络
        model = Sequential()
        # 两个卷积层
        model.add(Conv2D(filters=64, kernel_size=kernal_size, padding='same', input_shape=input_shape, activation='relu'))
        model.add(Conv2D(filters=128,kernel_size=kernal_size, padding='same', input_shape=input_shape, activation='relu'))
        # model.add(Conv2D(filters=64, kernel_size=kernal_size, padding='same', input_shape=input_shape, activation='relu'))
        # model.add(Conv2D(filters=128, kernel_size=kernal_size, padding='same', input_shape=input_shape, activation='relu'))
        # 池化层采用最大值池化
        model.add(MaxPooling2D(pool_size=(2,2)))
        # 再来一个卷积层
        model.add(Conv2D(filters=256, kernel_size=kernal_size, padding='same', input_shape=input_shape, activation='relu'))
        # model.add(Dense(n_hidden_1, activation='relu'))
        # model.add(Dense(n_classes, activation='softmax'))
        # model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['acc'])
        return model

    out_rri = create_single_model()
    out_edr = create_single_model()
    out_amp = create_single_model()
    # 2. 进行模型融合
    # print(out_rri.output)
    combined = concatenate([out_rri.output, out_edr.output, out_amp.output]) #(None, 7, 7, 768)
    # print(combined)
    # 2.1融合输入
    x = Dense(n_hidden_1, activation='relu')(combined)
    x = Flatten()(x)
    # 2.2最后输出
    x = Dense(n_classes, activation='softmax')(x)
    # 2.3模型定义完成
    model = Model(inputs = [out_rri.input, out_edr.input, out_amp.input], outputs = x)

    # model.summary()
    plot_model(model, to_file=base_floder_path + 'model.png', show_shapes=True)

    return model

创建之后后的绘制如下:

image-20221120203449060

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值