我需要将mnist
图像值数组分配给以下变量...
x = tf.get_variable("input_image", shape=[10,784], dtype=tf.float32)
问题是我需要筛选mnist
数据集并提取10个数字2的图像并将其分配给x
。
这是我筛选数据集并提取数字2的方法......
while mnist.test.next_batch(FLAGS.batch_size):
sample_image, sample_label = mnist.test.next_batch(10)
# get number 2
itemindex = np.where(sample_label == 1)
if itemindex[1][0] == 1:
# append image to numpy
np.append(labels_of_2, sample_image)
# if the numpy array has 10 images then we stop
if labels_of_2.size == 10:
break
# assign to variable
sess.run(tf.assign(x, labels_of_2))
问题是我相信我的逻辑是有缺陷的。我需要一个形状为[10, 784]
的数组来满足变量x
,显然下面的行不是这样做的...
np.append(labels_of_2, sample_image)
必须有一种简单的方法来实现我想要的东西,但我无法理解。
答案 0 :(得分:1)
忘记np.append
;收集列表中的图像
alist = []
while mnist.test.next_batch(FLAGS.batch_size):
sample_image, sample_label = mnist.test.next_batch(10)
# get number 2
itemindex = np.where(sample_label == 1)
if itemindex[1][0] == 1:
alist.append(sample_image)
# if the list has 10 images then we stop
if len(alist) == 10:
break
labels_of_2 = np.array(alist)
假设alist
中的数组都具有相同的大小,例如(784,),然后array
函数将生成一个具有形状(10,784)的新数组。如果图像为(1,784),则可以改为使用np.concatenate(alist, axis=0)
。
列表追加更快更容易使用。