[英]Tensorflow Keras dimensions not equal error for multiple labels
我正在嘗試使用 Tensorflow 2.0.0 的 Keras 和 Tensorflow Datasets API 從多維輸入預測到多維輸出。
我在python 3.6.9
上使用tensorflow 2.0.0
和tensorflow-datasets 1.3.0
。
下面是我的示例代碼,我還在 [a Colab notebook] ( https://colab.research.google.com/drive/1WMccCeLOrQU4k5D2noC4S_5rMe7-krEk ) 上復制了它,您可以運行:
import tensorflow as tf
data = [[1,2],[11,22]]
label = [[3,4,5], [33,44,55]]
dataset = tf.data.Dataset.from_tensor_slices((data,label))
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(3))
model.compile('adam','mse',metrics=['mse'])
model.fit(dataset, validation_data=dataset)
在這個示例代碼中,我試圖預測[1,2]->[3,4,5]
和[11,22]->[33,44,55]
。 但是我收到錯誤:
---------------------------------------------------------------------------
InvalidArgumentError Traceback (most recent call last)
/tensorflow-2.0.0/python3.6/tensorflow_core/python/framework/ops.py in _create_c_op(graph, node_def, inputs, control_inputs)
1609 try:
-> 1610 c_op = c_api.TF_FinishOperation(op_desc)
1611 except errors.InvalidArgumentError as e:
InvalidArgumentError: Dimensions must be equal, but are 2 and 3 for 'loss/output_1_loss/SquaredDifference' (op: 'SquaredDifference') with input shapes: [2,3], [3,1].
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last)
29 frames
/tensorflow-2.0.0/python3.6/tensorflow_core/python/framework/ops.py in _create_c_op(graph, node_def, inputs, control_inputs)
1611 except errors.InvalidArgumentError as e:
1612 # Convert to ValueError for backwards compatibility.
-> 1613 raise ValueError(str(e))
1614
1615 return c_op
ValueError: Dimensions must be equal, but are 2 and 3 for 'loss/output_1_loss/SquaredDifference' (op: 'SquaredDifference') with input shapes: [2,3], [3,1].
根據sohv89對該問題的評論,在數據集上使用批處理修復了代碼。 原始代碼比這更復雜,但使用批處理修復了它。
import tensorflow as tf
data = [[1,2],[11,22]]
label = [[3,4,5], [33,44,55]]
dataset = tf.data.Dataset.from_tensor_slices((data,label)).batch(2)
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(3))
model.compile('adam','mse',metrics=['mse'])
model.fit(dataset, validation_data=dataset)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.