[英]Keras Conv1D input for a very large number of samples
我有一個包含大量樣本 1686663 和 107 個特征(1686663、107)的數據集。 我正在使用 keras 構建神經網絡,並想應用一維卷積 Conv1D。
Conv1D 的輸入是(批量大小、數字特征、時間步長)。 批量大小基本上是樣本的數量,但是在我的情況下,我不能使用對於我的 RAM 來說太大的樣本數量。 所以我選擇了一個批量大小 = 512。
in_shape = (batch_size,x_train.shape[1],1)
因此,我的輸入形狀現在是 (512, 107, 1)。
我重塑了訓練向量以匹配卷積:
x_train = x_train.reshape(x_train.shape[0],x_train_shape[1],1)
運行訓練時出現以下錯誤:
ValueError: Input 0 of layer "sequential_10" is incompatible with the layer: expected shape=(None, 512, 107, 1), found shape=(None, 107, 1)
誰能告訴我我在這里缺少什么?
當您指定輸入形狀時,通過添加tf.keras.Input
層作為第一層,或者通過直接在 model 的第一層中設置參數input_shape
,您不必添加批量大小。 因此,在您的情況下,它將是:
in_shape = (x_train.shape[1], 1)
通過采用您在fit()
方法的batch_size
參數中設置的值,批量大小會自動設置為輸入形狀的第一維。
但是,如果您這樣做(batch_size, x_train.shape[1], 1)
,它將兩次添加批量大小。
該錯誤基本上是說它期望找到(batch size, 512, 107, 1)
但找到了(batch size, 107, 1)
。 預計會有額外的 512,因為您添加了兩次批量大小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.