建立和编译keras顺序模型时“列表索引超出范围”

时间:2019-02-08 16:59:27

标签: python python-3.x

我试图建立CNN模型以对mnist数据进行分类。因此,我尝试了这些代码,但是出现了“列表索引超出范围”错误

我正在使用python 3.6和tensorflow 1.12.0,Windows10,并且我的IDE是PyCharm。

C:\Windows\system32>ROBOCOPY F:\robocopytestv G:\robocopytestw /E /MIR

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows
-------------------------------------------------------------------------------

  Started : Friday, February 8, 2019 19:42:35
   Source : F:\robocopytestv\
     Dest : G:\robocopytestw\

    Files : *.*

  Options : *.* /S /E /DCOPY:DA /COPY:DAT /PURGE /MIR /R:1000000 /W:30

------------------------------------------------------------------------------

                           6    F:\robocopytestv\
100%        New File                   0        New Bitmap Image.bmp
100%        New File              495616        New Microsoft Access Database.accdb
100%        New File                6171        New Microsoft Excel Worksheet.xlsx
100%        New File                   0        New Microsoft PowerPoint Presentation.pptx
100%        New File                   0        New Microsoft Word Document.docx
100%        New File                7942        New OpenDocument Drawing.odg
          New Dir          0    F:\robocopytestv\New folder\

------------------------------------------------------------------------------

               Total    Copied   Skipped  Mismatch    FAILED    Extras
    Dirs :         2         1         1         0         0         0
   Files :         6         6         0         0         0         0
   Bytes :   497.7 k   497.7 k         0         0         0         0
   Times :   0:00:00   0:00:00                       0:00:00   0:00:00


   Speed :            72818428 Bytes/sec.
   Speed :            4166.703 MegaBytes/min.
   Ended : Friday, February 8, 2019 19:42:35

但是结果是这样的:

sess = tf.Session()

mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train / 255.0
x_test = x_test / 255.0
y_train = sess.run(tf.one_hot(y_train, 10))
y_test = sess.run(tf.one_hot(y_test, 10))

model = tf.keras.models.Sequential([
    tf.keras.layers.Conv2D(filters=32, kernel_size=[3, 3], strides=[1, 1],
                       padding='same', activation=tf.nn.relu),
    tf.keras.layers.MaxPooling2D(pool_size=[2, 2], strides=2, padding='same'),
    tf.keras.layers.Dropout(rate=0.3),
    tf.keras.layers.Conv2D(filters=64, kernel_size=[3, 3], strides=[1, 1],
                       padding='same', activation=tf.nn.relu),
    tf.keras.layers.MaxPooling2D(pool_size=[2, 2], strides=2, padding='same'),
    tf.keras.layers.Dropout(rate=0.3),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(units=512, activation=tf.nn.relu),
    tf.keras.layers.Dropout(rate=0.5),
    tf.keras.layers.Dense(units=10, activation=tf.nn.softmax)
 ])

model.compile(optimizer='adam',
          loss='categorical_crossentropy',
          metrics=['accuracy'])

model.fit(x_train, y_train, epochs=15)
print("Accuracy: {}".format(model.evaluate(x_test, y_test)))

1 个答案:

答案 0 :(得分:0)

错误IndexError: list index out of range仅表示您正在尝试访问列表中不存在的位置。

在这里,您尝试将x_trainy_train配合使用,其中一个数据框大于另一个数据框。我会尝试比较x_trainy_train的长度,看哪个大于另一个,然后更改大小,使它们的长度相等。