重塑错误张量流RNN
问题描述:
我无法解决我的代码问题。我不断收到以下错误信息,当我运行我的代码:重塑错误张量流RNN
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-1-cdb1929785d0> in <module>()
108 tf.reset_default_graph()
109
--> 110 train_neural_network(x)
<ipython-input-1-cdb1929785d0> in train_neural_network(x)
93 end = i+batch_size
94 batch_x = np.array(X_train[start:end])
---> 95 batch_x = batch_x.reshape((batch_size,n_chunks,chunk_size))
96 batch_y = np.array(y_1Hot_train.eval()[start:end])
97
ValueError: cannot reshape array of size 784 into shape (10,28,28)
我的数据集为(88041,784)阵列,其中我具有为10的批量大小当我走线95和运行它独立我没有得到任何错误,重塑发生没有失败。
例如,除了张量流,这段代码段的工作原理:
batch_x = np.array(X_train[0:10])
batch_x = batch_x.reshape((batch_size,n_chunks,chunk_size))
batch_x.shape # returns a shape of (10, 28, 28)
所以我不确定为什么张量流不断抛出错误。如果你有更好的主意,我会非常感激。
的tf.sessions部分是:
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for epoch in range (hm_epochs):
epoch_loss = 0
itere = int(X_train.shape[0]/batch_size)
last = 0
add = 1
batch_size = 10
i=0
while i < len(X_train):
start = i
end = i+batch_size
batch_x = np.array(X_train[start:end])
batch_x = batch_x.reshape((batch_size,n_chunks,chunk_size))
batch_y = np.array(y_1Hot_train.eval()[start:end])
_, c = sess.run([optimizer, cost], feed_dict={x: batch_x,
y: batch_y})
epoch_loss += c
i+=batch_size
sess_end = time.time() - start_time
的代码是在这里:https://gist.github.com/makark/bab1cd6a80667226d0aff35f637463b0
答
你是不是喂正确的数据批次,您的数据784的大小,但为了有形状(10,28,28)
你需要有7840,所以10个更多的例子(我猜你发布的内容)。
我的猜测是,你喂养X_train[0]
答
我会建议重塑X_train
你进入训练循环之前,而不是在每个批次中重塑:
...
X = X1.values.astype(np.float32)
X = X.reshape(-1, 28, 28)
...
如果你要想想你的训练数据为28x28矩阵,尽可能快地进行重塑是有意义的。它也将使调试更容易。
答
我解决了这个问题,看起来问题是我使用的数据集的大小(88041,784)不能被10(batch_Size)等分。似乎在循环的最后一次迭代中,1个样本被留下并导致错误。我从X_train中删除了最后一个样本,现在它可以工作...
'(10,28,28)'是7840,比784高一个数量级。你也使用了批量大小10.完全刺在黑暗中(因为我不知道你在做什么):'batch_x = batch_x.reshape((1,n_chunks,chunk_size))' – roganjosh