Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.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 数组整形后keras中的索引错误_Python_Tensorflow_Keras - Fatal编程技术网

Python 数组整形后keras中的索引错误

Python 数组整形后keras中的索引错误,python,tensorflow,keras,Python,Tensorflow,Keras,我使用了一个.csv文件作为图像数据,我将其重塑为一个2d numpy数组来表示图像 我不确定我遗漏了什么,在拟合模型时,我不断得到一个“索引器:列表索引超出范围” train_data = pd.read_csv('sign_mnist_train.csv') test_data = pd.read_csv('sign_mnist_test.csv') train_labels = train_data.pop('label').to_numpy().reshape(-1, 1) test_

我使用了一个.csv文件作为图像数据,我将其重塑为一个2d numpy数组来表示图像

我不确定我遗漏了什么,在拟合模型时,我不断得到一个“索引器:列表索引超出范围”

train_data = pd.read_csv('sign_mnist_train.csv')
test_data = pd.read_csv('sign_mnist_test.csv')

train_labels = train_data.pop('label').to_numpy().reshape(-1, 1)
test_labels = test_data.pop('label').to_numpy().reshape(-1, 1)

train_images = train_data.to_numpy().reshape(-1, 28, 28, 1) / 255.0
test_images = test_data.to_numpy().reshape(-1, 28, 28, 1) / 255.0

def make_model():
    model = models.Sequential()
    
    model.add(layers.Conv2D(32, (3,3), activation='relu', input_shape=(28, 28, 1)))
    model.add(layers.MaxPool2D((2,2)))
    model.add(layers.Conv2D(64, (3,3), activation='relu'))
    model.add(layers.MaxPool2D(2,2))
    model.add(layers.Conv2D(64, (3,3), activation='relu'))

    model.add(layers.Flatten())
    model.add(layers.Dense(64))
    model.add(layers.Dense(25))

    model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy,
                  metrics=['accuracy'])
    
    return model

model = make_model()
model.fit(train_images, train_labels, epochs=5, validation_data(test_images, test_labels))
完整回溯:

根据您命名的测试图像,我想问题出在这个
序列数据上。
此外,根据代码,您正在将它们重塑为4D张量,而不是2D张量

train_images = train_data.to_numpy().reshape(-1, 28, 28, 1) 
test_images = test_data.to_numpy().reshape(-1, 28, 28, 1) 

train_images = train_images / 255.0
test_images = test_images / 255.0
编辑: 检查对目标变量应用一个热编码是否有帮助

train_labels = tf.keras.utils.to_categorical(train_labels)

欢迎来到SO。请发布产生错误的代码和完整的回溯。@Frightera,我用它更新了我的评论。我希望这就是你要找的。但是如果我把4D张量的3维(宽度、高度、颜色通道)输入到Conv2D层,它不会自动找到第4维吗?我不知道为什么会有问题。重塑后的列车图像将具有4D,即
(批次大小、宽度、高度、颜色\u通道)
。这不是一个问题,我只是指出它不是正在创建的2D张量。@用户如果这回答了您的问题,请接受并投票。我仍然不确定出了什么问题,错误仍然存在。我使用的损失函数有问题。现在一切都好了,谢谢。