我已经训练了如下的深度学习模型,它是VGG16的分类器基础。
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(256, activation='relu', input_dim=4 * 4 * 512),
tf.keras.layers.Dropout(0.5),
tf.keras.layers.Dense(1, activation='sigmoid')
1-我的模型接受形状为(1,8192)的张量进行预测。
2-我有形状(150,150,3)的测试图像,这些图像被转换为数组。
3-现在,我想要一种将我的(150,150,3)图像转换为形状为(1,8192)的张量的方法。
答案 0 :(得分:3)
输入维度似乎非常随意,不适合任务。如果您非常顽固地进行下去,则可以将其转换为1d数组并像这样重新采样:
import numpy as np
from scipy import signal
image = np.random.rand(150,150,3)
image_8192 = signal.resample(image.ravel(), 8192)
...但这是一个非常糟糕的主意。稍微聪明一点的方法是先对图像进行降采样,方法是先将其转换为灰度,然后再降采样:
from skimage.color import rgb2gray
from skimage.transform import resize
grayscale = rgb2gray(image)
grayscale_91pix = resize(image, (91, 91)) # size 8291
image_8192 = signal.resample(grayscale_91pix.ravel(), 8192)
它仍然不是很好,但是比幼稚的方法要好。