如何在keras中使用网络为提供的索引创建二进制掩码

bwitn5fc  于 2023-01-21  发布在  其他
关注(0)|答案(1)|浏览(125)

我在Keras有一个网络,它将图像作为大小为176x208的输入图像,并输出35个索引示例

[[121  55 115  82  59  84  85  77 155  15  29 105  48  97 158  32 104  39 111 110  47   1  45   0 120 154 130  98 118  95 160  22  63  86  80]]

我想创建另一个网络,该网络采用这些索引并创建形状为176x208的二值掩码图像。此输出中显示的索引与列相对应。
如何创建此网络?

wydwbb8l

wydwbb8l1#

您可以在Keras中创建一个网络,通过使用一个完全连接的层,然后使用一个整形层,从索引生成一个二值遮罩图像。
首先,你可以使用一个全连通(密集)层,它有一个单一的输出单元,有一个sigmoid激活函数,这将获得输入索引,并为二进制掩码的每个像素产生一个0和1之间的连续输出。
然后,您可以使用整形图层将密集图层的输出整形为所需的图像形状(176 x208)。此整形图层将密集图层的输出(1-D阵列)转换为2-D形状图像(176 x208)。
例如,网络体系结构可以定义如下:

from keras.layers import Dense, Reshape

    input_indices = Input(shape=(35,))
    x = Dense(176*208, activation='sigmoid')(input_indices)
    output_image = Reshape((176,208))(x)
    model = Model(inputs=input_indices, outputs=output_image)

在将输入索引传递给模型之前,您还必须调整输入索引的形状以匹配模型的输入形状(35,)。
您可能还需要考虑使用不同的激活函数,如“relu”或“tanh”,以获得不同的结果。

相关问题