首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多数据MLP培训

多数据MLP培训
EN

Stack Overflow用户
提问于 2021-09-24 13:43:46
回答 1查看 134关注 0票数 0

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

我有两个数据集,有三个训练参数和一个输出(二进制分类)。我使用这里详细介绍的方法来构建一个生成器,一次一个地使用训练数据集来训练我的模型。但是,一旦我运行我的模型,我得到了一个值错误,我的传递数据集。

代码语言:javascript
复制
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'])

我得到以下错误:

代码语言:javascript
复制
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)

EN

回答 1

Stack Overflow用户

发布于 2021-12-16 14:43:05

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

代码语言:javascript
复制
...
model = Sequential()
model.add(layers.Input(shape=(number_of_features_to_network),))
...

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69316059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档