我想在不制作模型的情况下使用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操作。
答案 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或任何其他深度学习框架轻松地完成它。