【发布时间】: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