Python Keras列表索引超出范围

Python Keras列表索引超出范围,python,tensorflow,machine-learning,keras,Python,Tensorflow,Machine Learning,Keras,我得到了这个模糊的错误,我无法找到在线解决方案。我试图制作这段代码,找出两个数字之间的关系。出于测试目的,我使用简单的数据,其中的关系是简单地添加5。以下是我的培训数据:- 0,5 1,6 2,7 3,8 4,9 ... 现在,我正试图勾勒出一个简单的模型来完成我想做的事情。但是,它甚至没有到达代码的训练部分,只是以这个模糊的错误终止:- 2020-05-22 20:00:25.521151: I tensorflow/compiler/xla/service/service.cc:176]

我得到了这个模糊的错误,我无法找到在线解决方案。我试图制作这段代码,找出两个数字之间的关系。出于测试目的,我使用简单的数据,其中的关系是简单地添加5。以下是我的培训数据:-

0,5
1,6
2,7
3,8
4,9
...
现在,我正试图勾勒出一个简单的模型来完成我想做的事情。但是,它甚至没有到达代码的训练部分,只是以这个模糊的错误终止:-

2020-05-22 20:00:25.521151: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host, Default Version
2020-05-22 20:00:25.523749: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1102] Device interconnect StreamExecutor with strength 1 edge matrix:
2020-05-22 20:00:25.523805: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1108]      
Traceback (most recent call last):
  File "main.py", line 34, in <module>
    history = model.fit(train_data, epochs=100, verbose=1)
  File "/home/awesom
2020-05-22 20:00:25.521151: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host, Default Version
2020-05-22 20:00:25.523749: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1102] Device interconnect StreamExecutor with strength 1 edge matrix:
2020-05-22 20:00:25.523805: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1108]      
Traceback (most recent call last):
  File "main.py", line 34, in <module>
    history = model.fit(train_data, epochs=100, verbose=1)
  File "/home/awe_ruler/.local/lib/python3.7/site-packages/keras/engine/training.py", line 1239, in fit
    validation_freq=validation_freq)
  File "/home/awesome_ruler/.local/lib/python3.7/site-packages/keras/engine/training_arrays.py", line 141, in fit_loop
    if issparse(fit_inputs[i]) and not K.is_sparse(feed[i]):
IndexError: list index out of range
我试着改变图层表示和调整其他东西,但错误依然存在。我认为问题可能出在我的训练数据上,但我不确定

这就是我的训练数据在输入模型时的样子:-

最初,它实际上是一个csv文件,但已转换为NumPy数组以便于使用。这可能是因为数组的格式不好,但我对此一无所知


我使用的是Tensorflow GPU版本2.2.0和Keras版本2.3。此外,我正在尝试使用CUDA 10.1,它是按照TensorFlow官方网站的说明安装的。我不知道我的错误还有什么其他原因。有人能解释一下吗?

在您的培训数据中,第一列是输入,第二列是目标变量。在您提供的代码中,您将两者都视为am输入,而不提供目标变量

如果您将训练数据拆分为输入变量和目标变量,那么就训练过程而言,所有这些都会很好地工作,结果不会很好

下面是一个完整的工作示例:

import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import Adam

X = np.random.randint(0, 100, 1500)
train_data = np.array([X, X+5])

def build_model():
    model = Sequential([
        Dense(1, input_shape=(1,), activation='relu', kernel_initializer='ones'),
        Dense(1, activation='linear')])
    return model

mymodel = build_model()

opt = Adam(lr=0.01, decay=0.009)
mymodel.compile(loss='mean_squared_error', optimizer=opt)

# fit model
history = mymodel.fit(x=train_data[0], y=train_data[1], epochs=50, verbose=1)

注:我模拟了训练数据,并在构建模型上更改了输入形状。

您似乎只传递了X值,为什么不传递y值?两者都是训练神经网络所必需的。我觉得很难从这些信息中弄清楚到底发生了什么。您是否可以在文件:/home/awesome_rule/.local/lib/python3.7/site-packages/keras/engine/training_arrays.py的第141行添加一个pdb,看看什么是i?此外,训练数据应该由2个数组组成,1个代表X,另一个代表Y,大小相同。但您提供的是一个列表列表,其中内部列表的每个数据都包含x,y@SaurabhVerma我不明白你在说什么。这是一个带有解释的答案,并指出代码中需要更正的部分,好吗?我已经提到过,model.fit为X和y使用两个数组,而不是您提供的一个数组。大多数(如果不是所有的话)Keras示例也使用两个数组
 [[ 0.  5.]
 [ 1.  6.]
 [ 2.  7.]
 [ 3.  8.]
 [ 4.  9.]
 [ 5. 10.]
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import Adam

X = np.random.randint(0, 100, 1500)
train_data = np.array([X, X+5])

def build_model():
    model = Sequential([
        Dense(1, input_shape=(1,), activation='relu', kernel_initializer='ones'),
        Dense(1, activation='linear')])
    return model

mymodel = build_model()

opt = Adam(lr=0.01, decay=0.009)
mymodel.compile(loss='mean_squared_error', optimizer=opt)

# fit model
history = mymodel.fit(x=train_data[0], y=train_data[1], epochs=50, verbose=1)