【问题标题】:No change in loss or accuracy损失或准确性没有变化
【发布时间】:2017-11-20 21:39:56
【问题描述】:

我正在使用来自 Keras 博客的示例代码(进行了一些调整),但是在运行我的模型时,损失和准确度指标并没有提高。

我不确定是否错误地实现了某些功能。

我正在从保存的文件 (h5py) 中小批量加载图像。

import numpy as np
from scipy.misc import imread, imresize
import cv2
import matplotlib.pyplot as plt

from keras.layers import Conv2D, MaxPooling2D, Input, Flatten, Dense
from keras.models import Model
import keras

#model layers

input_img = Input(shape=(299, 299, 3))

tower_1 = Conv2D(64, (1, 1), padding='same', activation='relu')(input_img)
tower_1 = Conv2D(64, (3, 3), padding='same', activation='relu')(tower_1)

tower_2 = Conv2D(64, (1, 1), padding='same', activation='relu')(input_img)
tower_2 = Conv2D(64, (5, 5), padding='same', activation='relu')(tower_2)

tower_3 = MaxPooling2D((3, 3), strides=(1, 1), padding='same')(input_img)
tower_3 = Conv2D(64, (1, 1), padding='same', activation='relu')(tower_3)

concatenated_layer = keras.layers.concatenate([tower_1, tower_2, tower_3], axis=3)
conv1 = Conv2D(3,(3,3), padding = 'same', activation = 'relu')(concatenated_layer)
flatten = Flatten()(conv1)
dense_1 = Dense(500, activation = 'relu')(flatten)
predictions = Dense(12, activation = 'softmax')(dense_1)


#initialize and compile model


model = Model(inputs= input_img, output = predictions)
SGD =keras.optimizers.SGD(lr=0.01, momentum=0.0, decay=0.0, nesterov=False)

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



#Load images

import loading_hdf5_files
hdf5_path =r'C:\Users\Moondra\Desktop\Keras Applications\training.hdf5' 
batches = loading_hdf5_files.load_batches(12, hdf5_path, classes = 12)

for i in range(10):
    #creating a new generator
    batches = loading_hdf5_files.load_batches(8, hdf5_path, classes = 12)

    for i in range(15):
        x,y = next(batches)
        #plt.imshow(x[0])
        #plt.show()
        x = (x/255).astype('float32')  # trying to save memory
        data =model.train_on_batch(x/255,y)
        print('loss : {:.5},  accuracy :  {:.2%}'.format(*data))

我的输出

这是最后50步左右,但与第一步没有变化:

loss : 2.4226,  accuracy :  100.00%
loss : 2.4122,  accuracy :  100.00%
loss : 2.542,  accuracy :  0.00%
loss : 2.4793,  accuracy :  0.00%
loss : 2.4934,  accuracy :  0.00%
loss : 2.5132,  accuracy :  0.00%
loss : 2.4949,  accuracy :  0.00%
loss : 2.472,  accuracy :  0.00%
loss : 2.4616,  accuracy :  0.00%
loss : 2.4865,  accuracy :  0.00%
loss : 2.5585,  accuracy :  0.00%
loss : 2.4406,  accuracy :  0.00%
loss : 2.4882,  accuracy :  0.00%
loss : 2.4311,  accuracy :  0.00%
loss : 2.4895,  accuracy :  0.00%
loss : 2.502,  accuracy :  0.00%
loss : 2.4913,  accuracy :  0.00%
loss : 2.4585,  accuracy :  0.00%
loss : 2.4846,  accuracy :  0.00%
loss : 2.5143,  accuracy :  0.00%
loss : 2.4505,  accuracy :  0.00%
loss : 2.5574,  accuracy :  0.00%
loss : 2.5458,  accuracy :  0.00%
loss : 2.4311,  accuracy :  0.00%
loss : 2.4963,  accuracy :  0.00%
loss : 2.4212,  accuracy :  100.00%
loss : 2.4896,  accuracy :  0.00%
loss : 2.4824,  accuracy :  0.00%
loss : 2.4886,  accuracy :  0.00%
loss : 2.5135,  accuracy :  0.00%
loss : 2.4156,  accuracy :  100.00%
loss : 2.511,  accuracy :  0.00%
loss : 2.484,  accuracy :  0.00%
loss : 2.4965,  accuracy :  0.00%
loss : 2.5457,  accuracy :  0.00%
loss : 2.5343,  accuracy :  0.00%
loss : 2.5185,  accuracy :  0.00%
loss : 2.4902,  accuracy :  0.00%
loss : 2.4137,  accuracy :  100.00%
loss : 2.5271,  accuracy :  0.00%
loss : 2.5111,  accuracy :  0.00%
loss : 2.5014,  accuracy :  0.00%
loss : 2.4908,  accuracy :  0.00%
loss : 2.4904,  accuracy :  0.00%

【问题讨论】:

  • 首先,您的准确率始终是 100% 或 0%。这是一个时期的平均损失吗?
  • 是的,批次的平均损失(不是时期)。至于准确度,我使用的是内置指标,我假设它是批次的平均准确度。

标签: python deep-learning keras keras-2


【解决方案1】:

长时间训练似乎可以解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 2019-03-13
    • 1970-01-01
    • 2019-11-18
    • 1970-01-01
    相关资源
    最近更新 更多