【发布时间】:2018-03-22 07:03:40
【问题描述】:
我正在从扫描的文档中提取图形。使用 1100x850 图像。我们使用 44x34 的图像网格。这样最后一层将是 1496 全连接层。 标签是 44x34 BINARY 数组,其中 1 表示图形区域,0 表示非图形区域。即如果图形落在(右上)(x,y)=(0,0)(左下)(x,y)=(50,50),那么bin数组在(0,0)处有1(0,1 ) 和 (1,0) (1,1) 这些位置和其余 0。所以我有一个神经网络模型。以下是结构。
conv(5,2,48)
maxpool(3,2)
conv(5,2,96)
maxpool(3,2)
conv(5,2,96)
maxpool(3,2)
FC-1496
符号 conv(k,d, n) 表示具有 n 个过滤器的卷积层,每个过滤器的大小为 k × k,应用 d 个像素的移位; maxpool(k, d) 表示在 k×k 个窗口上的下采样操作,应用了 d 个像素的移位。 FC-1496 指最终全连接 层将前一层的隐藏单元连接到 1496 个输出单元(对于 44x34 网格,我们有 1496 个单元)。
所以我的问题是如何使用 keras 和张量流向该模型提供输入(图像和标签(数组))。
这是型号代码
from keras.layers.convolutional import Conv2D
from keras.layers.convolutional import MaxPooling2D
from keras.layers.core import Activation
from keras.layers.core import Dense
from keras.models import Sequential
from keras.layers import Flatten
xtrain=#image of 850*1100 for 10 images 10 850*1100
xtest=#binary array of size 1496 for 10 images size is 10*1496
# initialize the model
model = Sequential()
model.add(Conv2D(48, 5, 2, input_shape=(1100, 850, 1)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(3, 3), strides=2))
model.add(Conv2D(96, 5, 2))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(3, 3), strides=2))
model.add(Conv2D(96, 5, 2))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(3, 3), strides=2))
model.add(Flatten())
model.add(Dense(1496, activation='sigmoid'))
model.compile(loss='mean_squared_error', optimizer='sgd', metrics=['accuracy'])
【问题讨论】:
-
你写了什么代码?您是否已经尝试过使用 Keras?
-
我只为模型编写代码而不是训练或测试,所以我想知道如何将图像作为上述模型的输入。如果需要,我可以发布模型代码。
-
您需要提供一些代码,否则问题无法回答。
标签: python neural-network keras