Tensorflow 洗牌批量梯度张量

Tensor flow shuffle a tensor for batch gradient

可能与谁有关,

我对张量流还很陌生。我正在尝试为 CNN 解决著名的 MNIST 问题。但是当我不得不重新排列 x_training 数据(这是一个 [40000, 28, 28, 1] 形状数据。

我的代码如下:

x_train_final = tf.reshape(x_train_final, [-1, image_width, image_width, 1])

x_train_final = tf.cast(x_train_final, dtype=tf.float32)

perm = np.arange(num_training_example).astype(np.int32)
np.random.shuffle(perm)

x_train_final = x_train_final[perm]

发生以下错误:

ValueError:形状必须是等级 1,但对于 'strided_slice_1371'(op:'StridedSlice')是等级 2,输入形状:[40000,28,28,1],[1,40000] , [1,40000], [1].

任何人都可以建议我如何解决这个问题?谢谢

我建议您使用 scikit 的 shuffle 函数。

from sklearn.utils import shuffle
x_train_final = shuffle(x_train_final)

此外,您可以传入多个数组,shuffle 函数将重组(洗牌)这些多个数组中的数据,在所有这些数组中保持相同的洗牌顺序。因此,您甚至可以传入标签数据集。 例如:

X_train, y_train = shuffle(X_train, y_train)