Keras 3 API 文件 / 層 API / 核心層 / InputSpec 物件

InputSpec 物件

[來源]

InputSpec 類別

keras.InputSpec(
    dtype=None,
    shape=None,
    ndim=None,
    max_ndim=None,
    min_ndim=None,
    axes=None,
    allow_last_axis_squeeze=False,
    name=None,
    optional=False,
)

指定層的每個輸入的階數、dtype 和形狀。

層可以公開(如果適用)input_spec 屬性:InputSpec 的實例,或 InputSpec 實例的巢狀結構(每個輸入張量一個)。這些物件使層能夠針對 Layer.__call__ 的第一個引數執行輸入相容性檢查,包括輸入結構、輸入階數、輸入形狀和輸入 dtype。

形狀中的 None 條目與任何維度相容。

引數

  • dtype:預期的輸入 dtype。
  • shape:形狀元組,預期的輸入形狀(可能包含 None 以表示動態軸)。包含批次大小。
  • ndim:整數,預期的輸入階數。
  • max_ndim:整數,輸入的最大階數。
  • min_ndim:整數,輸入的最小階數。
  • axes:將整數軸對應到特定維度值的字典。
  • allow_last_axis_squeeze:如果為 True,則允許階數為 N+1 的輸入,只要輸入的最後一個軸為 1,以及階數為 N-1 的輸入,只要規格的最後一個軸為 1。
  • name:將資料作為字典傳遞時,此輸入預期的鍵。
  • optional:布林值,輸入是否為選用。選用輸入可以接受 None 值。

範例

class MyLayer(Layer):
    def __init__(self):
        super().__init__()
        # The layer will accept inputs with
        # shape (*, 28, 28) & (*, 28, 28, 1)
        # and raise an appropriate error message otherwise.
        self.input_spec = InputSpec(
            shape=(None, 28, 28, 1),
            allow_last_axis_squeeze=True)