问题描述
这是我的代码块:
x_train = []
def preprocess_dataset(batch_size,normalize=True):
#first accessing RSSI columns to train x-axis
col_list = [0,1]
trainX_data_frame = pd.read_csv('/home/Documents/generated_RSSi_dataset.csv',usecols=col_list)
trainX_rows = pd.DataFrame(trainX_data_frame)
for trainX_row in trainX_rows:
train_x1 = trainX_row.loc[0]
#train_x1 = trainX_row[0].loc[trainX_row]
train_x2 = trainX_row.loc[1]
training_x = ((train_x1 + train_x2)/2)
x_train = x_train.append(training_x)
return np.array(x_train),np.array(y_train)
for i in range(training_cycles):
x_train = preprocess_dataset(x_train)
y_train = preprocess_dataset(np.array(y_train))
x_train = x_train.reshape(x_train,time_steps,n_features)
history = model.fit(x_train,y_train,epochs=30,batch_size=10,validation_split=0.2)
我收到由命名错误引起的属性错误。我已经检查了代码的其他部分,它在任何地方都没有遗漏任何声明或定义。只有在这部分代码“函数 preprocess_dataset”中有一些错误。我知道这是由于 for 循环,可能是如果不执行循环,则 x_train 将没有任何属性。但我不知道如何解决这个问题。任何帮助将不胜感激。
注意:y_train 是一个类似的块,所以我没有在代码部分添加它。
%%%%%% 2021 年 7 月 4 日更新%%%% 使用 Nicolas Gervais 的评论,更改了以下内容。
x_train = []
y_train = []
def preprocess_dataset_x(batch_size,normalize=True):
#first accessing RSSI columns to train x-axis
col_list_x = [0,1]
trainX_data_frame = pd.read_csv('/home/kobuki/Documents/generated_RSSi_dataset.csv',usecols=col_list_x)
trainX_rows = pd.DataFrame(trainX_data_frame)
for index,row in trainX_rows.iterrows():
train_x1 = trainX_rows.loc[0]
train_x2 = trainX_rows.loc[1]
training_x = ((train_x1 + train_x2)/2)
x_train.append(training_x)
print("x_train calculated and stored in array")
return np.array(x_train)
def preprocess_dataset_y(batch_size,normalize=True):
#accessing loc coordinates to train y-axis
col_list_y = [2,3]
trainY_data_frame = pd.read_csv('/home/kobuki/Documents/generated_RSSi_dataset.csv',usecols = col_list_y)
trainY_rows = pd.DataFrame(trainY_data_frame)
for index,row in trainY_rows.iterrows():
train_y1 = trainY_rows.loc[2]
train_y2 = trainY_rows.loc[3]
training_y = (train_y1,train_y2)
y_train.append(training_y)
print("y_train calculated and stored in array")
return np.array(y_train)
for i in range(training_cycles):
x_train = preprocess_dataset_x(np.array(x_train))
y_train = preprocess_dataset_y(np.array(y_train))
### x_train = tf.data.Dataset.from_tensor_slices(x_train)
### y_train = tf.data.Dataset.from_tensor_slices(y_train)
### x_train = x_train.reshape(x_train,n_features)
### y_train = y_train.reshape(y_train,batch_size=10)
此后,在将模型拟合到 conv1D 时,我现在收到以下错误。
我在重塑时也遇到错误,并且沿 x_train,y_train 创建的数组是 460,460,2。我不知道为什么它说 min_ndim 预期为 3。请指教。
%%% 模型 %%%
def createCnnLstmModel(time_steps,n_features):
##CorNet architecture
model = Sequential()
model.add(Conv1D(filters=32,kernel_size=5,activation='relu',input_shape=(time_steps,n_features)))
model.add(Batchnormalization())
model.add(MaxPooling1D(pool_size=4))
model.add(Dropout(0.1))
model.add(Conv1D(filters=32,n_features)))
model.add(Batchnormalization())
model.add(MaxPooling1D(pool_size=4))
model.add(Dropout(0.1))
model.add(LSTM(128,activation='tanh',return_sequences=True))
model.add(LSTM(128,activation='tanh'))
model.add(Dense(1))
model.compile(optimizer='RMSProp',loss='MAE',metrics=['mae','mape',soft_acc])
model.summary()
return model
timesteps = 460 且 n_features 为 2。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)