我训练了一个深度学习模型,如下,它是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)的 tensors 进行预测。
2-我有形状的测试图像(150,150,3),这些图像被转换为数组。
3-现在我想要一种方法将我的(150,150,3)图像转换为形状(1,8192)的tensors。
输入的维度似乎很随意,不适合任务。如果你很固执地要继续,你可以简单地把它投成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)
虽然还不是很好,但总比天真无邪的方法好。