Keras Conv1D 错误:最后一层输入数据的最后一维未定义
该错误提示为最后一层的输入数据的最后一维未定义,可以在定义模型时指定输入数据的最后一维,例如:
model.add(Dense(100, activation='relu', input_shape=(input_dim,)))
其中 input_dim 为输入数据的最后一维的维度大小。
例如,如果输入数据的形状为 (batch_size, time_steps, features),则 input_dim 应该等于 features。
代码示例:
import pandas as pd
import numpy as np
from keras.models import Sequential
from keras.layers import Conv1D, MaxPooling1D, Flatten, Dense
# 读取数据
data = pd.read_excel('E:\pythonProject5\深度学习\新建 XLS 工作表.xls')
# 将数据转化为二维数组
data = np.array(data)
# 定义CNN模型
model = Sequential()
model.add(Conv1D(filters=32, kernel_size=3, activation='relu', input_shape=(None, 1)))
model.add(MaxPooling1D(pool_size=2))
model.add(Conv1D(filters=64, kernel_size=3, activation='relu'))
model.add(MaxPooling1D(pool_size=2))
model.add(Flatten())
# 指定最后一维的维度大小
model.add(Dense(100, activation='relu', input_shape=(input_dim,)))
model.add(Dense(1, activation='linear'))
# 编译模型
model.compile(loss='mean_squared_error', optimizer='adam')
# 将数据转化为适合CNN输入的形式
X = data[:, :-1] # 取数据的前n-1列作为输入
X = X.reshape(X.shape[0], X.shape[1], 1) # 将输入数据的最后一维设为1
y = data[:, -1]
# 训练模型
model.fit(X, y, epochs=10, batch_size=32)
# 提取特征
feature_map = model.predict(X)
注意:
input_dim的值应该与输入数据的最后一维的维度大小一致。- 在定义模型时,应该在所有需要指定
input_shape的层中都指定input_dim。 - 如果输入数据不是固定大小,可以使用
None来表示该维度,例如input_shape=(None, features)。
通过以上操作,您就可以解决“最后一层输入数据的最后一维未定义”错误,并成功训练您的 Keras Conv1D 模型。
原文地址: https://www.cveoy.top/t/topic/oYMd 著作权归作者所有。请勿转载和采集!