我是Keras的新人,但之前我曾使用纯粹的tensorflow。我正在尝试调试下面的一些网络(我只会复制一个片段。丢失函数,优化器等对我来说对于这段代码并不重要)
#Block 1 (Conv,relu,batch) starts with 800 x 400
main_input = LNN.Input(shape=((800,400,5)),name='main_input')
enc_conv1 = LNN.Convolution2D(8,3,padding='same',activation='relu')(main_input)
enc_bn1 = LNN.BatchNormalization(axis=1)(enc_conv1)
#Block 2 (Conv,relu,batch) starts with 400 x 200
maxp1_4 = LNN.MaxPooling2D(strides=2)(enc_bn1)
enc_conv2 = LNN.Convolution2D(16,3,padding='same',activation='relu')(maxp1_4)
enc_bn2 = LNN.BatchNormalization(axis=1)(enc_conv2)
enc_conv3 = LNN.Convolution2D(16,3,padding='same',activation='relu')(enc_bn2)
enc_bn3 = LNN.BatchNormalization(axis=1)(enc_conv3)
concat1_5 = LNN.concatenate(axis=3,inputs=[enc_bn3,maxp1_4])
我已经看到了一些示例,说明如何将每个操作添加到Sequential()函数中(例如,使用add {)函数解释here。有没有办法检查输出每个层没有将它们添加到模型本身(因为它也可以使用Tensorflow,进行会话)?
答案 0 :(得分:0)
最好是制作一个输出这些图层的模型:
modelToOutputAll = Model(main_input, [enc_conv1, enc_bn1, maxp1_4, enc_conv2, enc_bn2, enc_conv3, enc_bn3, concat1_5])
对于培训,请保留仅包含最终输出的模型:
modelForTraining = Model(main_input,concat1_5)
两个模型都使用完全相同的权重,因此训练一个改变另一个。你可以用每一个来做你目前所需要的。
modelForTraining.fit(xTrain,yTrain, ...)
modelToOutputAll.predict(xInput)