我在尝试训练一个用于二分类的神经网络时遇到了问题,当我想拟合模型时,根据输入数据会出现一些错误。当我使用包含一些列表的列表时,我得到了以下错误:
ValueError: `validation_split` is only supported for Tensors or NumPy arrays, found following types in the input: [<class 'float'>, <class 'float'>, <class 'float'>, <class 'float'>,...
这是我的一部分输入数据:
[[0.6136568, 0.84256226, .... -0.8160665, -0.73415625], [0.14178441, -0.011213281, .... 0.1529382, 0.1492072], [-0.6528975, -0.5710656999999999, .....
为了解决这个错误,我尝试将列表转换为数组,但现在我遇到了这个错误:
ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type list).
这是我的一部分输入数据:
array([list([0.6136568, .... , -0.8160665, -0.73415625]), list([0.14178441, ....., 0.1492072]), ....
这是我的代码:
def getRawData(x_data,y_data,dataset,label,window_size):for i in range(0,dataset.size,window_size): x_data.append(dataset.iloc[i:i+window_size,].to_list()) y_data.append(label)x=[]y=[]getRawData(x,y,ds1,0,45)getRawData(x,y,ds2,1,45)getRawData(x,y,ds3,0,45)getRawData(x,y,ds4,1,45)num_units=64learning_rate = 0.0001activation_function = 'relu'adam = Adam(lr=learning_rate)loss_function = 'binary_crossentropy'batch_size = 20num_epochs = 300model = Sequential()model.add(LSTM(units = num_units,activation=activation_function,input_shape=(None,1)))model.add(LeakyReLU(alpha=0.5))model.add(Dropout(0.1))model.add(Dense(units = 1))model.compile(optimizer=adam, loss=loss_function,metrics=['accuracy'])history = model.fit( x, y, validation_split=0.1, batch_size=batch_size, epochs=num_epochs, shuffle=False)
问题是什么?正确的输入格式是什么?
回答:
感谢@*** 的建议,我阅读了转换为张量的文档,并找到了问题所在。问题是转换为张量无法处理同一维度中长度不同的数组,而我只是在我的getRawData函数中犯了一个错误。