【问题标题】:How to use Keras layers without making model如何在不制作模型的情况下使用 Keras 图层
【发布时间】:2018-09-23 14:40:51
【问题描述】:

我想在不制作模型的情况下使用 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 操作。

【问题讨论】:

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


    【解决方案1】:

    您可以仅使用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)
    

    【讨论】:

    • 这行得通,示例代码如下: 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=[ '准确度']) pooled = model.predict(image)
    • 你能看看我的问题吗:stackoverflow.com/questions/49630178/…。我没有得到答案
    【解决方案2】:

    您可以使用函数式 API 来做到这一点:只需定义 input,然后执行以下操作:

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

    顺便说一句,使用 Keras 有点矫枉过正,因为它是构建 models 的工具包。您可以使用 tensorflow 或任何其他深度学习框架在不使用 keras 的情况下轻松完成。

    【讨论】:

    • 我知道 tf.nn.max_pool 很有用,但我还是不知道如何使用它。
    猜你喜欢
    • 1970-01-01
    • 2018-12-12
    • 2015-05-16
    • 2023-01-31
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    相关资源
    最近更新 更多