如何将Keras 2.0中的Merge层替换为函数式编程方式?
- 内容介绍
- 文章标签
- 相关推荐
本文共计461个文字,预计阅读时间需要2分钟。
在新版Keras中,使用`model.add()`添加`Merge`层时,需要采用函数式编程的方式。以下是修改后的代码:
pythonfrom keras.layers import Concatenate, Input
定义两个模型输入input1=Input(shape=(...))input2=Input(shape=(...))
定义模型1和模型2model1=Model(inputs=input1, outputs=model1.output)model2=Model(inputs=input2, outputs=model2.output)
使用Concatenate函数合并输出output=Concatenate()([model1.output, model2.output])
创建新的模型new_model=Model(inputs=[input1, input2], outputs=output)
不能再向以前一样使用
model.add(Merge([Model1,Model2]))
必须使用函数式
out = Concatenate()([model1.output, model2.output])
补充知识:keras 新版接口修改
1.
# b = MaxPooling2D((3, 3), strides=(1, 1), border_mode='valid', dim_ordering='tf')(x)
b = MaxPooling2D((3, 3), strides=(1, 1), padding='valid', data_format="channels_last")(x)
2.
from keras.layers.merge import concatenate # x = merge([a, b], mode='concat', concat_axis=-1) x = concatenate([a, b], axis=-1)
3.
from keras.engine import merge m = merge([init, x], mode='sum') Equivalent Keras 2.0.2 code: from keras.layers import add m = add([init, x])
4.
# x = Convolution2D(32 // nb_filters_reduction_factor, 3, 3, subsample=(1, 1), activation='relu', # init='he_normal', border_mode='valid', dim_ordering='tf')(x) x = Conv2D(32 // nb_filters_reduction_factor, (3, 3), activation="relu", strides=(1, 1), padding="valid", data_format="channels_last", kernel_initializer="he_normal")(x)
1.
# b = MaxPooling2D((3, 3), strides=(1, 1), border_mode='valid', dim_ordering='tf')(x) b = MaxPooling2D((3, 3), strides=(1, 1), padding='valid', data_format="channels_last")(x)
2.
from keras.layers.merge import concatenate # x = merge([a, b], mode='concat', concat_axis=-1) x = concatenate([a, b], axis=-1)
3.
from keras.engine import merge m = merge([init, x], mode='sum') Equivalent Keras 2.0.2 code: from keras.layers import add m = add([init, x])
4.
# x = Convolution2D(32 // nb_filters_reduction_factor, 3, 3, subsample=(1, 1), activation='relu', # init='he_normal', border_mode='valid', dim_ordering='tf')(x) x = Conv2D(32 // nb_filters_reduction_factor, (3, 3), activation="relu", strides=(1, 1), padding="valid", data_format="channels_last", kernel_initializer="he_normal")(x)
以上这篇使用keras2.0 将Merge层改为函数式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持易盾网络。
本文共计461个文字,预计阅读时间需要2分钟。
在新版Keras中,使用`model.add()`添加`Merge`层时,需要采用函数式编程的方式。以下是修改后的代码:
pythonfrom keras.layers import Concatenate, Input
定义两个模型输入input1=Input(shape=(...))input2=Input(shape=(...))
定义模型1和模型2model1=Model(inputs=input1, outputs=model1.output)model2=Model(inputs=input2, outputs=model2.output)
使用Concatenate函数合并输出output=Concatenate()([model1.output, model2.output])
创建新的模型new_model=Model(inputs=[input1, input2], outputs=output)
不能再向以前一样使用
model.add(Merge([Model1,Model2]))
必须使用函数式
out = Concatenate()([model1.output, model2.output])
补充知识:keras 新版接口修改
1.
# b = MaxPooling2D((3, 3), strides=(1, 1), border_mode='valid', dim_ordering='tf')(x)
b = MaxPooling2D((3, 3), strides=(1, 1), padding='valid', data_format="channels_last")(x)
2.
from keras.layers.merge import concatenate # x = merge([a, b], mode='concat', concat_axis=-1) x = concatenate([a, b], axis=-1)
3.
from keras.engine import merge m = merge([init, x], mode='sum') Equivalent Keras 2.0.2 code: from keras.layers import add m = add([init, x])
4.
# x = Convolution2D(32 // nb_filters_reduction_factor, 3, 3, subsample=(1, 1), activation='relu', # init='he_normal', border_mode='valid', dim_ordering='tf')(x) x = Conv2D(32 // nb_filters_reduction_factor, (3, 3), activation="relu", strides=(1, 1), padding="valid", data_format="channels_last", kernel_initializer="he_normal")(x)
1.
# b = MaxPooling2D((3, 3), strides=(1, 1), border_mode='valid', dim_ordering='tf')(x) b = MaxPooling2D((3, 3), strides=(1, 1), padding='valid', data_format="channels_last")(x)
2.
from keras.layers.merge import concatenate # x = merge([a, b], mode='concat', concat_axis=-1) x = concatenate([a, b], axis=-1)
3.
from keras.engine import merge m = merge([init, x], mode='sum') Equivalent Keras 2.0.2 code: from keras.layers import add m = add([init, x])
4.
# x = Convolution2D(32 // nb_filters_reduction_factor, 3, 3, subsample=(1, 1), activation='relu', # init='he_normal', border_mode='valid', dim_ordering='tf')(x) x = Conv2D(32 // nb_filters_reduction_factor, (3, 3), activation="relu", strides=(1, 1), padding="valid", data_format="channels_last", kernel_initializer="he_normal")(x)
以上这篇使用keras2.0 将Merge层改为函数式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持易盾网络。

