Keras构建和训练多输入网络模型-conditional CNN(tensorflow相关)

这篇博客介绍了如何在TensorFlow-gpu2.5.0环境下构建和训练一个处理图像和条件值双输入的神经网络模型。通过Keras库定义了两个输入层,分别对应图像和条件值,然后通过卷积、池化和全连接层进行处理,并将两者拼接后输入到全连接层。最后使用model.fit方法以字典形式输入训练数据进行模型训练。
摘要由CSDN通过智能技术生成

第二篇博客,用来整理之前写论文做实验遇到的小问题和解决方法,本文环境为tensorflow-gpu 2.5.0。

由于在实验过程中,需要使用两个输入,一个图像作为输入,一个条件值也作为输入,所以在构建和训练双输入的网络遇到了一些问题。在此记录多输入神经网络模型的构建方法和训练方法。

Keras构建(多输入)网络模型

from tensorflow.keras.layers import Convolution2D, Flatten, Dropout, MaxPooling2D, GlobalAvgPool2D, Dense, Add, Input, Activation, BatchNormalization
from tensorflow.keras.models import Model

inp1 = Input(shape=(1280, 1024, 1), name="img")#第一个输入,图像,名字为'img'
inp2 = Input(shape=(1), name="rate")#第二个输入,条件,名字为'rate'

#卷积层。
out = Convolution2D(4, 3, strides=(2, 2))(inp1)
out = BatchNormalization()(out)
out = Activation('relu')(out)
out = MaxPooling2D(2, 2)(out)
#可加多层卷积

out = GlobalAvgPool2D()(out)#将卷积结果处理为一维数组shape=4
concatted = tf.keras.layers.Concatenate()([out, inp2])#将第二个输入与out拼接起来shape=5

out = Dense(16)(concatted)#全连接层
out = Dense(1)(out)

model = Model(inputs=[inp1, inp2], outputs=out)#inp1和inp2作为输入,输出为out的模型实例化
plot_model(model, to_file='RateCNN.png')#保存网络模型结构图

训练多输入网络模型-使用fit

一般来说训练网络就是model.fit(x=data,y=label,epochs=10);然而多输入时在train_data也只能输入一个变量,我们这里输入的时一个字典格式的结果{img, rate}

history = model.fit(x={img,rate},y=label,epochs=40)

可以开始训练包含多输入的网络模型。

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值