如何在不制作模型的情况下使用 Keras 图层
How to use Keras layers without making model
我想在不制作模型的情况下使用 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 操作。
你可以只用 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)
您可以使用函数 API 来实现:只需定义 input
,然后执行如下操作:
maxpooled = MaxPooling2D(...)(input)
maxpooled.eval(feed_dict={input: input_image}, session=...)
顺便说一句,为此使用 Keras 有点矫枉过正,因为它是用于构建 models
的工具包。您可以在没有 keras 的情况下使用 tensorflow 或任何其他深度学习框架轻松地做到这一点。
我想在不制作模型的情况下使用 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 操作。
你可以只用 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)
您可以使用函数 API 来实现:只需定义 input
,然后执行如下操作:
maxpooled = MaxPooling2D(...)(input)
maxpooled.eval(feed_dict={input: input_image}, session=...)
顺便说一句,为此使用 Keras 有点矫枉过正,因为它是用于构建 models
的工具包。您可以在没有 keras 的情况下使用 tensorflow 或任何其他深度学习框架轻松地做到这一点。