【问题标题】:tensorflow CNN does not use all the images for training [duplicate]tensorflow CNN 不使用所有图像进行训练[重复]
【发布时间】:2021-06-17 08:25:37
【问题描述】:

我已经定义了一个 tensorflow CNN 如下:

    import tensorflow as tf

from tensorflow.keras import datasets, layers, models
import matplotlib.pyplot as plt
model = models.Sequential()
model.add(layers.Conv2D(1, (9, 9), activation='relu', input_shape=(153, 204,1)))
model.add(layers.MaxPooling2D((3, 3)))
model.add(layers.Conv2D(2, (9,9), activation='tanh'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(2, (9,9), activation='relu'))
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(1, activation  = 'softmax'))
model.summary()

我使用这个命令训练的

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

history = model.fit(image_list, behaviour, epochs=5, 
                    validation_data=(image_list, behaviour), verbose = 1)

(这是最初的提交,所以我还不想进行训练测试拆分,一次一个块)

image_list 的尺寸为 :(1809, 153, 204, 1),包含 1809 张 153x204x1 像素的图像 行为可以取任何值 0,1,2

但是我注意到一些奇怪的事情,即在训练期间我得到了这个

57/57 [==============================] - 19s 325ms/step - loss: 0.0000e+00 - accuracy: 0.2537 - val_loss: 0.0000e+00 - val_accuracy: 0.2830

为什么会有 57/57。这是否意味着只考虑了 57 张图像?非常可预测,损失 = 0 但准确率 = 30%,大致对应于数据集中第一个标签的百分比(所有 57 个第一个图像共享)

我怎样才能说服它考虑更多? PS,我知道洗牌,我只想使用训练集中的所有图像 谢谢大家的时间 最好的

【问题讨论】:

    标签: python tensorflow conv-neural-network image-classification


    【解决方案1】:

    57 是每个 epoch 的迭代次数。

    您有 1809 张图片,默认批量大小为 32(也是图片) - 因为您没有在代码中指定 (see the documentation),所以 cell(1809/batch_szie) = 57。

    因此,每个 epoch 都会考虑所有图像,只需要 57 个步骤(迭代)即可完成。

    【讨论】:

      猜你喜欢
      • 2017-07-18
      • 1970-01-01
      • 1970-01-01
      • 2017-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-17
      • 2018-04-13
      相关资源
      最近更新 更多