我的輸入張量Data = Input(shape=(856,))是一個由許多不同設備連接的 float32 值的向量。我正在嘗試將不同的 TensorFlow 函式應用于每個輸入塊的不同子切片。其中一些功能包括需要重塑的一維卷積。
slice = Data[:20]
reshape = tf.reshape(slice, (-1, 20, 1))
...
在嘗試適合我的模型后這樣做會崩潰。它引發以下錯誤:
tensorflow.python.framework.errors_impl.InvalidArgumentError: Input to reshape is a tensor with 10272 values, but the requested shape requires a multiple of 20
[[node model/tf.reshape_1/Reshape
(defined at /home/.local/lib/python3.8/site-packages/keras/layers/core/tf_op_layer.py:261)
]] [Op:__inference_train_function_1858]
Errors may have originated from an input operation.
Input Source operations connected to node model/tf.reshape_1/Reshape:
In[0] model/tf.__operators__.getitem_1/strided_slice:
In[1] model/tf.reshape_1/Reshape/shape:
我不確定如何從 856 的張量中切片 20 個元素會導致 10272 值的張量。
我還嘗試tf.slice了幾種不同的方式使用該功能;都失敗了。參考檔案:https : //www.tensorflow.org/guide/tensor_slicing
slice = tf.slice(Data, begin=[0], size=[20])
...
并失敗,說明:
Shape must be rank 1 but is rank 2 for '{{node tf.slice/Slice}} = Slice[Index=DT_INT32, T=DT_FLOAT](Placeholder, tf.slice/Slice/begin, tf.slice/Slice/size)' with input shapes: [?,856], [1], [1].
作為參考,以下是輸入資料中的一些值的樣子
array([-9.55784683e 01, -1.70557899e 01, 2.95967350e 01, 7.81378937e 00,
9.02729130e 00, 5.49621725e 00, 4.19811630e 00, 5.84186697e 00,
4.90438080e 00, 3.73845983e 00, 5.12300587e 00, 2.61530232e 00,
2.67061424e 00, 3.91038632e 00, 2.31110978e 00, 4.20644665e 00,
4.50000000e 00, 9.87345278e-01, 1.59740388e 00, 6.30727148e 00,
...
uj5u.com熱心網友回復:
當您像其中一樣對資料進行切片時Data[:20],將產生一個長度為的序列min(20, len(Data))。所以我猜你的資料長度小于20。
其他訊息說它有 2 級,所以我猜它有以下形狀之一
1 10272
2 5136
3 3424
4 2568
6 1712
8 1284
12 856
16 642
10272如您的第一條訊息所示,任何這些都會導致帶有元素的張量,這不是 20 的倍數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/409755.html
標籤:
