我有一个大小为 50000 的列表。说a。每个元素都是一个元组,比如b=a[0]。每个元组由 2 个列表组成,比如c=b[0], d=b[1]。第一个列表 iec的长度为 784,第二个 ied的长度为 10。从这个列表中,我需要提取以下内容:
将 list 的前 10 个元素分组a。从这 10 个元组中,提取它们的第一个元素 ( c) 并将它们放入大小为 的矩阵中784x10。还要提取元组的第二个元素并将它们放入另一个 size 矩阵中10x10。对 list 中每批 10 个元素重复此操作a。
这可以使用列表理解在一行中完成吗?还是我必须写多个 for 循环?哪种方法是有效和最好的?注意:如果我得到一个列表或 numpy.ndarray 矩阵也没关系。
附加信息:我正在关注这个关于神经网络的教程,该教程旨在设计一个神经网络来识别手写数字。MNIST 数据库用于训练网络。训练数据采用上述格式。我需要为每个 mini_batch 创建一个 input_images 和 expected_output 矩阵。
这是我试过的代码。我得到一个大小为 50000 的列表。它没有被拆分成 mini_batches
f = gzip.open('mnist.pkl.gz', 'rb')
tr_d, va_d, te_d = pickle.load(f, encoding='latin1')
f.close()
training_inputs = [numpy.reshape(x, (784, 1)) for x in tr_d[0]]
training_results = [vectorized_result(y) for y in tr_d[1]]
training_data = zip(training_inputs, training_results)
# training_data is a list of size 50000 as described above
n = len(training_data) # n=50000
mini_batch_size = 10
mini_batch = [x[0] for k in range(0, n, mini_batch_size) for x in training_data[k:k+mini_batch_size]]
将mnist.pkl.gz可在这里
翻过高山走不出你
相关分类