如何将形状数组(150,150,3)重塑为形状数组(1,8192)

时间:2020-04-26 19:03:10

标签: python numpy tensorflow deep-learning neural-network

我已经训练了如下的深度学习模型,它是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)的张量的方法。

1 个答案:

答案 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)

它仍然不是很好,但是比幼稚的方法要好。