首页 文章

如何在不制作模型的情况下使用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 . 但是我要说我必须进行最大化操作,我只有1张尺寸为56 * 64且带有灰度的图像,即以4d张量形式输入(1,56,64,1) . 那么如何使用Keras MaxPooling2D 层执行maxpooling操作 .

2 回答

  • 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)
    
  • 2

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

    maxpooled = MaxPooling2D(...)(input)
    maxpooled.eval(feed_dict={input: input_image}, session=...)
    

    BTW使用Keras是一种矫枉过正,因为它是构建 models 的工具包 . 你可以使用tensorflow或任何其他深度学习框架轻松地完成它 .

相关问题