Python 如何循环使用Keras拟合函数?

Python 如何循环使用Keras拟合函数?,python,tensorflow,machine-learning,keras,models,Python,Tensorflow,Machine Learning,Keras,Models,为了避免写这封信500次: model.fit( x[i], y[i], batch_size=batch, epochs=epochs, validation_split=0.05) 我想通过我拟合的数据集的数量来循环这个过程。但是,当我这样做时,first fit的指标如下所示: loss: nan - acc: 7.4635e-04 - val_loss: nan - val_acc: 0.0000e+00 每次运行后,其指标

为了避免写这封信500次:

model.fit(
      x[i],
      y[i],
      batch_size=batch,
      epochs=epochs,
      validation_split=0.05)
我想通过我拟合的数据集的数量来循环这个过程。但是,当我这样做时,first fit的指标如下所示:

loss: nan - acc: 7.4635e-04 - val_loss: nan - val_acc: 0.0000e+00
每次运行后,其指标为:

loss: nan - acc: 0.0000e+00 - val_loss: nan - val_acc: 0.0000e+00
现在我不认为
val_loss
val_acc
为0和nan是好的,但至少有
acc
但是在第一次拟合之后,所有指标基本上都是空的

编辑:

这是我格式化数据的代码
x[i]
是所有数据,其中
x[0]
将是第一个完整的数据集

    x_train = [None] * len(os.listdir('/'))
    y_train = [None] * len(os.listdir('/'))
    x_test = [None] * len(os.listdir('/'))
    y_test = [None] * len(os.listdir('/'))


def format_data(data, seq_len, normalise_window):
    sequence_length = seq_len + 1
    result = []
    for index in range(len(data) - sequence_length):
        result.append(data[index: index + sequence_length])

    if normalise_window:
        result = normalise_windows(result)

    result = np.array(result)


    row = round(0.85 * result.shape[0])
    train = result[:int(row), :]
    np.random.shuffle(train)
    x_train = train[:, :-1]
    y_train = train[:, -1]
    x_test = result[int(row):, :-1]
    y_test = result[int(row):, -1]

    x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], 1))
    x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], 1))

    return [x_train, y_train, x_test, y_test]

for i, filename in enumerate(os.listdir('/directory')):
        try:
          print"starting file :",filename
          data = pd.read_csv('directory/{0}'.format(filename), index_col=0, header=0)
          data['open'].replace('nan',np.nan)
          data.dropna()
          new = data['open'].tolist()


          x_train[i], y_train[i], x_test[i], y_test[i] = format_data(new, seq_len, True)
        except:
          pass

for i in range(len(x_train)):
        print"starting fit :",i,"of length",len(x_train)

        try:
          model.fit(
            x_train[i],
            y_train[i],
            batch_size=batch,
            epochs=epochs,
            validation_split=0.05)
        except:
          pass

如何实现我要做的事情?

尝试删除for块并插入此代码

model.fit(
        x_train,
        y_train,
        batch_size=batch,
        epochs=epochs,
        validation_split=0.05)
我希望这对你有帮助。
我猜“nan”表示损失和val_损失,因为你要向模型传递一个值,请尝试传递张量本身(希望你能在损失n val_损失中得到一些值)。

为什么要尝试在拟合函数上循环?
x
的类型是什么?
nan
丢失可能发生在很多事情上,包括您的数据、模型、激活、目标数据以及您预处理的方式。如果您只适合
x[0]
y[0]
,是否会发生这种情况?@ZiyadEdher x是一个顺序数据集。我想循环它,这样我就不必复制和粘贴fit函数的500个。@nuric第一次(
x[0]
)它给了我这些度量<代码>损失:nan-附件:7.4635e-04-val_损失:nan-val_附件:0.0000e+00如Op中所述
x[0]
代表什么?第一个数据点或数据点列表?因此我在OP中添加了大量代码,
x[I]
不是一个单一的值,它应该是(至少在我目前的理解中)一整套数据。代码中的第一个for循环显示了如何用数据填充
x
。当我删除
try:except:
时,它仍然存在相同的问题。我无法理解你的数据,因为它不在我身边,keras以张量的形式获取整个数据。对于y[]来说,我已经完成了OHE(一个热编码)