我一直在开发前馈神经网络(FNNS)和复发性神经网络(RNNs)在Keras与形状的结构化数据[instances, time, features],以及FNNS和RNNs的表现一直不变(除了RNNs需要更多的计算时间).
我还模拟了表格数据(下面的代码),我希望RNN的表现优于FNN,因为系列中的下一个值取决于系列中的先前值; 但是,两种架构都能正确预测.
对于NLP数据,我看到RNN优于FNN,但没有表格数据.一般来说,何时会期望RNN的表格数据优于FNN?具体来说,有人可以使用表格数据发布模拟代码,证明RNN优于FNN吗?
谢谢!如果我的模拟代码不适合我的问题,请调整它或分享一个更理想的模拟代码!
from keras import models
from keras import layers
from keras.layers import Dense, LSTM
import numpy as np
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)
在10个时间步骤中模拟了两个特征,其中第二个特征的值取决于先前时间步骤中两个特征的值.
## Simulate data.
np.random.seed(20180825)
X = np.random.randint(50, 70, size = (11000, 1)) / 100
X = np.concatenate((X, X), axis = 1)
for i in range(10):
X_next = np.random.randint(50, 70, size = (11000, 1)) / 100
X = np.concatenate((X, X_next, (0.50 * X[:, -1].reshape(len(X), 1))
+ (0.50 * X[:, -2].reshape(len(X), …Run Code Online (Sandbox Code Playgroud) 在Keras有没有办法交叉验证被监控的早期停止指标EarlyStopping(monitor = 'val_acc', patience = 5)?在允许训练进入下一个时期之前,是否可以对模型进行交叉验证以获得更稳健的测试误差估计?我发现早期停止指标,比如验证集的准确性,可能会受到高度差异的影响.早期停止的模型在看不见的数据上通常表现不佳,我怀疑这是因为与验证集方法相关的高差异.
为了尽量减少早期停止指标的方差,我想k-fold交叉验证早期停止指标,因为模型从时代i到时代训练i + 1.我想在时代上取模型i,将训练数据分成10个部分,学习9个部分,估计剩余部分的误差,重复以便所有10个部分都有机会成为验证集,然后继续i + 1像往常一样用完整的训练数据训练时代.10个误差估计的平均值有望成为一个更强大的指标,可用于提前停止.
我曾尝试编写一个包含k-fold交叉验证的自定义度量函数,但我无法使其工作.有没有办法交叉验证被监控的早期停止指标,可能是通过Keras模型内部的自定义函数或Keras模型外部的循环?
谢谢!!
我一直在阅读有关 Keras RNN 模型(LSTM 和 GRU)的内容,作者似乎主要关注语言数据或使用由先前时间步骤组成的训练实例的单变量时间序列。我的数据有点不同。
我在 10 年中每年测量 100,000 人的 20 个变量作为输入数据,并将第 11 年测量的 20 个变量作为输出数据。我想做的是预测第 11 年其中一个变量(而不是其他 19 个)的值。
我的数据结构为X.shape = [persons, years, variables] = [100000, 10, 20]和Y.shape = [persons, variable] = [100000, 1]。下面是我的 LSTM 模型的 Python 代码。
## LSTM model.
# Define model.
network_lstm = models.Sequential()
network_lstm.add(layers.LSTM(128, activation = 'tanh',
input_shape = (X.shape[1], X.shape[2])))
network_lstm.add(layers.Dense(1, activation = None))
# Compile model.
network_lstm.compile(optimizer = 'adam', loss = 'mean_squared_error')
# Fit model.
history_lstm = network_lstm.fit(X, …Run Code Online (Sandbox Code Playgroud) 我尝试按照以下说明在 Ubuntu 上的 Anaconda 中安装 Facebook Prophet:
https://facebook.github.io/prophet/docs/installation.html#installation-in-python。
在 Anaconda Navigator 中,当我单击环境时,fbprophet 与其他已安装的软件包一起列出。问题是当我尝试在 Jupyter 中使用 fbprophet 时:
from fbprophet import Prophet
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:“ModuleNotFoundError:没有名为‘fbprophet’的模块”。这很奇怪,因为根据 Anaconda,fbprophet 包似乎安装在我的环境中。
请问有人可以帮忙吗?
谢谢!