【问题标题】:MLP Training on Multiple data多数据的 MLP 训练
【发布时间】:2021-11-17 19:11:49
【问题描述】:

这个问题是我上一个问题的后续问题,可以在 [这里][1] 找到。

我有两个数据集,其中包含三个训练参数和一个输出(二元分类)。我使用 [此处][2] 详细介绍的方法构建了一个生成器,以一次获取一个训练数据集来训练我的模型。但是一旦我运行我的模型,我就会收到传递的数据集的值错误。

file1 = "/home/Documents/t1.csv"
file2 = "/home/Documents/t2.csv"
files = [file1,file2]

model = Sequential()
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(64, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

def BatchGenerator(files):
    for file in files:
        df = pd.read_csv(file)
        X_train = df.drop(["output"],axis=1)
        y_train = df["output"]
        yield (X_train, y_train)

n_epochs = 100
for epoch in range(n_epochs):
    for (X_train, y_train) in BatchGenerator(files):
        model.fit(X_train, y_train, batch_size = 32, nb_epoch = 1)
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

我收到以下错误:

ValueError                                Traceback (most recent call last)
<ipython-input-63-0b14a52c7fba> in <module>
 37 for epoch in range(n_epochs):
 38     for (X_train, y_train) in BatchGenerator(files):
---> 39         model.fit(X_train, y_train, batch_size = 32, nb_epoch = 1)
 40 model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

~/anaconda3/lib/python3.7/site-packages/keras/engine/training.py in fit(self, x, y, 
batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, 
class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, 
**kwargs)
948             sample_weight=sample_weight,
949             class_weight=class_weight,
--> 950             batch_size=batch_size)
951         # Prepare validation data.
952         do_validation = False

~/anaconda3/lib/python3.7/site-packages/keras/engine/training.py in 
_standardize_user_data(self, x, y, sample_weight, class_weight, check_array_lengths, 
batch_size)
662                                      'either a single '
663                                      'array or a list of arrays. '
--> 664                                      'You passed: x=' + str(x))
665                 all_inputs.append(x)
666 

ValueError: Please provide as model inputs either a single array or a list of arrays. 
You passed: x=         in1     in2  in3
0     2.1282  5.8809  0.0
1     2.9293  1.1067  0.0
2     2.5568  0.8797  0.0
3     2.9293  1.1067  0.0
4     0.0000  0.7009  0.0
...      ...     ...  ...
1268  1.2085  0.9672  0.0
1269  0.0000  0.7009  0.0
1270  3.4218  3.6143  0.0
1271  1.9270  0.8991  0.0
1272  2.1109  0.8390  0.0

[1273 rows x 3 columns]

任何帮助将不胜感激。谢谢 [1]:Training MLP on multiple csv files [2]:Training a Neural Network with Multiple Datasets (Keras)

【问题讨论】:

标签: python mlp


【解决方案1】:

您需要将输入层定义为 Sequential 模型,以便它知道预期的输入向量。

...
model = Sequential()
model.add(layers.Input(shape=(number_of_features_to_network),))
...

调用model.fit 后,您正在执行model.compile 的第二个问题。 首先调用compile方法,然后调用fit方法

【讨论】:

    猜你喜欢
    • 2016-03-04
    • 2016-12-07
    • 2021-11-16
    • 2016-03-26
    • 2016-10-01
    • 2018-08-18
    • 2021-09-02
    • 1970-01-01
    • 2020-08-08
    相关资源
    最近更新 更多