gpt4 book ai didi

python - 如何在numpy中将图像(28,28,1)转换为(28,28,3)

转载 作者:行者123 更新时间:2023-12-02 18:06:00 25 4
gpt4 key购买 nike

我想将 mnist 数据集转换为 (28, 28, 3) 维度以适合 tf.keras.applications.MobileNetV2模型,但此模型需要 (x, y, 3) 维度。

https://www.tensorflow.org/tutorials/images/transfer_learning

第一个任务是将 mnist (28,28,1) 扩展为 mnist (28,28,3),然后将 ( 28,28,3)(x,y,3)

这是显示(28,28,1)图像的代码:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(28*28*1).reshape(28,28,1)

plt.figure()
plt.imshow(x)
plt.title(x.shape)
plt.show()

enter image description here

以下代码尝试显示 (28,28,3),但它NOT是从 (28,28,1) 转换而来的>:

y = np.arange(28*28*3).reshape(28,28,3)

plt.figure()
plt.imshow(y)
plt.title(y.shape)
plt.show()

enter image description here

如何将上面的(28,28,1)图像转换为(28,28,3)并在matplotlib中显示?

测试:

这里是比较原始图像 (x)、numpy RGB 图像 (y)、tensorflow RGB (z) 的测试,和填充零图像(pad_zero):

import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf

x = np.arange(28*28*1).reshape(28,28,1)
x = x / x.max()

y = np.repeat(x, 3, axis=2)

z = tf.image.grayscale_to_rgb(tf.convert_to_tensor(x)).numpy()

def pad_with_zeros(a):
a = a.copy()
for ii, i in enumerate(a):
for jj, j in enumerate(i):
for kk, k in enumerate(j):
if kk != 0:
a[ii, jj, kk] = 0
return a

pad_zero = pad_with_zeros(y)

fig, axes = plt.subplots(1, 4, figsize=(16, 4))
fig.subplots_adjust(wspace=0.1, hspace=0.1)

plt.subplot(1, 4, 1)
plt.imshow(x)
plt.title("x: {}".format(x.shape))

plt.subplot(1, 4, 2)
plt.imshow(y)
plt.title("np.repeat: {}".format(y.shape))

plt.subplot(1, 4, 3)
plt.imshow(z)
plt.title("tf.image: {}".format(z.shape))

plt.subplot(1, 4, 4)
plt.imshow(pad_zero)
plt.title("pad_zero: {}".format(pad_zero.shape))

plt.show()

enter image description here

为什么所有图像颜色不同

yz 的颜色应该看起来像 x,但它们不是。有什么问题吗?

最佳答案

您可以使用 numpy 的 repeat 函数。

>>> x = np.ones((28, 28, 1))
>>> y = np.repeat(x, 3, axis=2)
>>> y.shape
(28, 28, 3)

Here是此方法的文档。

关于python - 如何在numpy中将图像(28,28,1)转换为(28,28,3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73235522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com