Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用多个数据集训练神经网络(KERA)_Python_Keras_Deep Learning_Neural Network_Training Data - Fatal编程技术网

Python 用多个数据集训练神经网络(KERA)

Python 用多个数据集训练神经网络(KERA),python,keras,deep-learning,neural-network,training-data,Python,Keras,Deep Learning,Neural Network,Training Data,我使用的数据集对应于单个时间序列信号。每个信号都是唯一的,具有不同的数据点总数,尽管每个信号表示相同的语义数据(速度单位为mph) 我正在与Keras合作,试图将一个基本的神经网络与数据相匹配,以便对其进行评估。下面是这方面的Python代码: model = Sequential() model.add(Dense(64, activation='relu')) model.add(Dropout(0.2)) model.add(Dense(128, activation='relu')) m

我使用的数据集对应于单个时间序列信号。每个信号都是唯一的,具有不同的数据点总数,尽管每个信号表示相同的语义数据(速度单位为mph)

我正在与Keras合作,试图将一个基本的神经网络与数据相匹配,以便对其进行评估。下面是这方面的Python代码:

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'))

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
基本上,我将模型拟合到每个数据集,如下所示:

for file in directory:
    data = pd.read_csv(file)
    # get x_train and y_train ...
    model.fit(X_train, y_train, epochs=10)

这是在相同语义数据的多个数据集上训练模型的有效方法吗?

是的,您可以创建一个模型,然后在循环中调用数据进行训练,或者可以使用循环将数据堆叠在单个矩阵中,然后调用拟合函数。在第一种方法中,您将调用fit()n次,但在较小的数据块中,而在后一种方法中,您将只调用fit()一次,但使用大数据矩阵


但是,第一个更好,因为在一个矩阵中分配所有数据可能会有问题。因此,请继续您当前的实现。

每个数据集的精度会有所不同吗?例如,第一个模型经过10个时代后,其精度可能达到约94%。然后,对于第二个数据集,精度从~65开始。这正常吗?在94%之后获得65%是可以的。这是因为,您的第一个数据集可能并没有覆盖数据的整个向量空间。因此,添加了第二个数据集,扩展了向量空间。然而,由于模型是在第一集上训练的,而第一集可以访问有限的特征空间,因此它的性能会很差。一旦对两个数据集进行训练,就可以得到所需的模型,该模型将更加健壮和准确。要进行测试,您可以从每个数据集中提取一些点,然后只对第一个数据集进行训练。稍后,测试所有数据点。您会注意到,第一组数据点表现良好,而另一组数据点表现不佳。然后继续第二组数据集的训练。之后,模型在第1组和第2组的表现都会更好,但在第3组的表现就不那么好了。所以继续训练直到所有的套路都用尽。一旦您这样做并测试来自每个数据集的数据点,您将注意到模型在所有点上都表现良好。太好了。有没有办法评估模型的整体准确性?我知道model.evaluate只需要一个数据集,但我是否需要对我正在培训的每个数据集求model.evaluate的平均值?