如何在不制作模型的情况下使用Keras图层

时间:2018-04-13 09:25:43

标签: python tensorflow keras keras-layer keras-2

我想在不制作模型的情况下使用Keras图层pooling layers。每当我看到与Keras相关的示例时,我都会以模型形式看到它们,如下所示:

model = Sequential()
model.add(Conv2D(2, kernel_size=(3, 3),activation='relu',
                 input_shape=input_shape))
model.add(MaxPooling2D(pool_size=(2, 2)))
....

model.compile(loss=keras.losses.binary_crossentropy,
              optimizer=keras.optimizers.Adadelta(),
              metrics=['accuracy'])
model.fit(x_train, y_train,batch_size=batch_size,epochs=epochs,verbose=1,)

这样,首先我们定义input,然后模拟compile和最后fit。但是我要说我必须执行maxpooling操作,我只有1张尺寸为56 * 64且带有灰度的图像,即以4d张量形式输入(1,56,64,1)。那么如何使用Keras MaxPooling2D层执行maxpooling操作。

2 个答案:

答案 0 :(得分:2)

您可以制作仅包含MaxPooling2D并执行predict(不包含fit)的模型:

model = Sequential()
model.add(MaxPooling2D(pool_size=(2, 2), input_shape=input_shape))
model.compile('adadelta')

pooled = model.predict(image)

compile完全没有影响。

完整代码

来自@Hitesh评论的例子:

from keras.models import Sequential
from keras.layers import MaxPooling2D
import numpy as np

image=np.random.rand(1, 56, 64, 1)
input_shape=(56,64,1)

model = Sequential()
model.add(MaxPooling2D(pool_size=(2, 2), input_shape=input_shape))
model.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['accuracy'])

pooled = model.predict(image)

答案 1 :(得分:2)

您可以使用功能API来实现:只需定义input,然后执行以下操作:

maxpooled = MaxPooling2D(...)(input)
maxpooled.eval(feed_dict={input: input_image}, session=...)
使用Keras的BTW就是一种矫枉过正,因为它是用于构建models的工具包。你可以使用tensorflow或任何其他深度学习框架轻松地完成它。