簡體   English   中英

Keras:層順序的輸入 0 與層不兼容

[英]Keras: Input 0 of layer sequential is incompatible with the layer

我正在嘗試創建一個帶有一個隱藏層的神經網絡模型,然后嘗試對其進行評估,但我收到一個我無法清楚理解的錯誤:

ValueError: 層序列 1 的輸入 0 與層不兼容:預期 min_ndim=2,發現 ndim=1。 收到的完整形狀:[30]

看起來我的輸入層的尺寸有誤,但我不太明白是什么。 我用谷歌搜索並查看了stackoverflow,但到目前為止還沒有找到任何有用的東西。 請問有什么幫助嗎?

這是一個最小的工作示例:

import tensorflow as tf

# Define Sequential model with 3 layers
input_dim = 30
num_neurons = 10
output_dim = 12
model = tf.keras.Sequential(
    [
        tf.keras.layers.Dense(input_dim, activation="relu", name="layer1"),
        tf.keras.layers.Dense(num_neurons, activation="relu", name="layer2"),
        tf.keras.layers.Dense(output_dim, name="layer3"),
    ]
)
model(tf.ones(input_dim))

層具有輸入和輸出維度。 對於神經網絡“中間”的層,它們從前一層的輸出域中找出它們的輸入域。 唯一的例外是第一層沒有任何內容,需要設置input_dim 這是修復代碼的方法。 請注意我們如何傳遞維度。 第一個(隱藏)層是 input_dim x num_neurons,第二個(輸出層)num_neurons x output_dim

您可以在兩者之間粘貼更多層; 他們只需要第一個參數,他們的輸出維度

另請注意,我還必須修復您的最后一行,tf.ones 需要是 2D 形狀 num_observation x input_dim

import tensorflow as tf

# Define Sequential model with 1 hidden layer
input_dim = 30
num_neurons = 10
output_dim = 12
model = tf.keras.Sequential(
    [
        tf.keras.layers.Dense(num_neurons, input_dim = input_dim, activation="relu", name="layer1"),
        tf.keras.layers.Dense(output_dim, name="layer3"),
    ]
)
model(tf.ones((1,input_dim)))

產生(對我來說;我認為這些數字本質上是隨機初始化)

<tf.Tensor: shape=(1, 12), dtype=float32, numpy=
array([[ 0.06973769, -0.1798143 , -0.2920275 ,  0.84811246,  0.44899416,
        -0.10300556,  0.00831143, -0.16158538,  0.13395026,  0.4352504 ,
         0.19114715,  0.44100884]], dtype=float32)>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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