簡體   English   中英

Tensorflow Keras 維度不等於多個標簽的錯誤

[英]Tensorflow Keras dimensions not equal error for multiple labels

我正在嘗試使用 Tensorflow 2.0.0 的 Keras 和 Tensorflow Datasets API 從多維輸入預測到多維輸出。

我在python 3.6.9上使用tensorflow 2.0.0tensorflow-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM