keras中的图像到图像映射

2024-04-19 21:12:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我是机器学习的新手。我有一个二维数组(图像)需要映射到另一个二维数组(图像)。所有的例子都是在分类问题中使用输出为1的Dense层。但是,我的问题是简单的映射和图像到另一个图像。 如何在keras中指定输出数组(图像)。请在下面找到一个示例代码。我需要改变架构,给我一个与输入相同大小的输出(2Darray)。你知道吗

from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense

model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=(3, 150, 150)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())  # this converts our 3D feature maps to 1D feature vectors
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))

Tags: from图像importaddmodellayers数组activation
1条回答
网友
1楼 · 发布于 2024-04-19 21:12:50

你需要的是一些自动编码器对称结构。与普通架构不同,您的输出将是三维的,因为您有图片作为输出。然后用与输入/输出相同的数据拟合模型。下面是一个生成数据的简单示例:

from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Dropout, UpSampling2D
import numpy as np

input = np.random.rand(10, 30, 30)

input = input[..., None] # keras needs 4D input, so add 1 dimension

model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=(30, 30, 1), activation='relu', padding='same'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu', padding='same'))
model.add(Dropout(0.5))
model.add(Conv2D(64, (3, 3), activation='relu', padding='same'))
model.add(UpSampling2D((2, 2)))
model.add(Conv2D(1, (3, 3), activation='sigmoid', padding='same'))

model.compile(loss='mean_squared_error', optimizer='adam')

model.fit(input, input, batch_size=8, epochs=1)

相关问题 更多 >