簡體   English   中英

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

[英]ValueError: Input 0 of layer sequential_37 is incompatible with the layer: expected ndim=3, found ndim=2. Full shape received: [None, 15]

我已經做了我所知道的所有嘗試。 還有 input_dim = 15 的所有組合。 如果有人可以幫助我?

print(x_train.shape)
print(y_train.shape)
print(x_test.shape)
print(y_test.shape)

(233941, 15)

(233941, 1)

(100261, 15)

(100261,)

我已經使用 input_dim = (233941, 15) 和 input_dim = (233941, 1) 完成了測試。 但是我還是找不到問題所在。 我的問題可能出在數據集部門嗎?

from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dense, Dropout, LSTM
model = Sequential()
model.add(LSTM(100, input_dim=15, return_sequences=True))
model.add(Dropout(0.3))

model.add(LSTM(50, return_sequences = True))
model.add(Dropout(0.3))
#3 camada
model.add(LSTM(50, return_sequences = True))
model.add(Dropout(0.3))

model.add(LSTM(units = 50))
model.add(Dropout(0.3))

model.add(Dense(1, activation='sigmoid'))

# Compile model
model.compile(optimizer = 'adam', loss = 'mean_squared_error',
                  metrics = ['mean_absolute_error'])
# Fit the model
model.fit(x_train,y_train,epochs=100, validation_data=(x_test,y_test))
Epoch 1/100
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-79-2e6c4d489e38> in <module>()
     21                   metrics = ['mean_absolute_error'])
     22 # Fit the model
---> 23 model.fit(x_train,y_train,epochs=100, validation_data=(x_test,y_test))

10 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/func_graph.py in wrapper(*args, **kwargs)
    971           except Exception as e:  # pylint:disable=broad-except
    972             if hasattr(e, "ag_error_metadata"):
--> 973               raise e.ag_error_metadata.to_exception(e)
    974             else:
    975               raise

ValueError: in user code:

    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:806 train_function  *
        return step_function(self, iterator)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:796 step_function  **
        outputs = model.distribute_strategy.run(run_step, args=(data,))
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:1211 run
        return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:2585 call_for_each_replica
        return self._call_for_each_replica(fn, args, kwargs)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:2945 _call_for_each_replica
        return fn(*args, **kwargs)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:789 run_step  **
        outputs = model.train_step(data)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:747 train_step
        y_pred = self(x, training=True)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/base_layer.py:976 __call__
        self.name)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/input_spec.py:180 assert_input_compatibility
        str(x.shape.as_list()))

    ValueError: Input 0 of layer sequential_37 is incompatible with the layer: expected ndim=3, found ndim=2. Full shape received: [None, 15]

正如 Marco Certliani 在評論中提到的,您需要為 RNN 正確設置輸入格式,因為您提到的錯誤是 3 維的。

這是輸入張量應該是什么樣子的表示: 在此處輸入圖片說明

這意味着您的 3D 張量將具有 (batch_size, time_step, input_dimension) 的形狀。

暫無
暫無

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

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