首页 > 解决方案 > Keras 的 fit() 不接受我的 numpy 数组数据

问题描述

嘿,我刚刚开始学习深度学习,我正在尝试使用 fit() 函数训练我的模型,但是我在将训练数据传递给 fit() 时遇到了问题,我将向您展示我的过程,以便您获得很好地了解我的数据的外观。

这就是我从 Keras 获取数据的方式:

(train_data, train_labels), (test_data, test_labels) = data.load_data(num_words=10000)

这是一个numpy列表数组

我还尝试通过将所有列表设置为长度为 250 的 numpy 数组来使数组中的每个列表保持一致。实际上有一个名为 keras.preprocessing.sequence.pad_sequences() 的函数正是我尝试做的事情,而且, fit() 与该函数一起使用,但我想创建自己的函数,这是我的函数:

 def make_data_const_250(data):

    for i in range(len(data)):

        data[i]=np.asarray(data[i])#converting list to numpy
        if len(data[i]) < 250:
            for j in range(250-len(data[i])):
                data[i]=np.append(data[i],word_index["<SPACE>"])

        elif len(data[i]) > 250:
            data[i] = data[i][ :250]
    return data

然后我试图使数据保持一致:

train_data=make_data_const_250(train_data)
test_data=make_data_const_250(test_data)

这就像做:

train_data=keras.preprocessing.sequence.pad_sequences(train_data, value=word_index["<SPACE>"],padding="post",maxlen=250)

并用 test_data 做同样的事情

我在调用我的函数和 Kera 的函数后打印了数据类型,它们都给出了一个 numpy 数组的 numpy 数组。

然后我调用了 fit() 函数:

x_val=train_data[:10000] # validation data
x_train=train_data[10000:] # training data

y_val=train_labels[:10000] #validation labels

y_train=train_labels[10000:]#training lables

fitModel = model.fit(x_train, y_train, epochs=7, batch_size=512,validation_data=(x_val,y_val),verbose=1)

它给出的错误是:ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型 numpy.ndarray)。

并且使用 Kera 的函数它可以工作,而我的函数却没有,我想知道为什么 fit() 函数不会接受我的 numpy 数组的 numpy 数组以及如何修复错误,我也很新到numpy数组也是如此,所以问题可能与此有关,谢谢您的帮助!

标签: pythonnumpytensorflowkeras

解决方案


推荐阅读