我正在训练一个神经网络来识别.png图片上的一些属性,当我开始训练的时候,我得到的东西是这样的,并且它一直在增加,直到时代结束:
32/4817 [..............................] - ETA: 167s - loss: 0.6756 - acc: 0.5
64/4817 [..............................] - ETA: 152s - loss: 0.6214 - acc: 0.7
96/4817 [..............................] - ETA: 145s - loss: 0.6169 - acc: 0.7
128/4817 [.............................] - ETA: 142s - loss: 0.5972 - acc: 0.7
160/4817 [.............................] - ETA: 140s - loss: 0.5734 - acc: 0.7
192/4817 [>............................] - ETA: 138s - loss: 0.5604 - acc: 0.7
224/4817 [>............................] - ETA: 137s - loss: 0.5427 - acc: 0.7
256/4817 [>............................] - ETA: 135s - loss: 0.5160 - acc: 0.7
288/4817 [>............................] - ETA: 134s - loss: 0.5492 - acc: 0.7
320/4817 [>............................] - ETA: 133s - loss: 0.5574 - acc: 0.7
352/4817 [=>...........................] - ETA: 131s - loss: 0.5559 - acc: 0.7
384/4817 [=>...........................] - ETA: 129s - loss: 0.5550 - acc: 0.7
416/4817 [=>...........................] - ETA: 128s - loss: 0.5504 - acc: 0.7
448/4817 [=>...........................] - ETA: 127s - loss: 0.5417 - acc: 0.7
480/4817 [=>...........................] - ETA: 126s - loss: 0.5425 - acc: 0.7
我的问题是,为什么启动精度如此之高?我认为它应该在0.1左右,然后在学习的过程中不断增加。
另外,在最后我得到:
('Test loss:', 0.42451223436727564)
('Test accuracy:', 0.82572614112830256)
这是不是测试损失太大了?
这是我的网络:
input_shape = x_train[0].shape
print(input_shape)
model = Sequential()
stoplearn = keras.callbacks.EarlyStopping(monitor='val_loss', min_delta=0,
patience=0, verbose=0, mode='auto')
model.add(Conv2D(32, kernel_size=(3, 3),
activation='relu',
input_shape=input_shape))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(2, activation='softmax'))
model.compile(loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.Adadelta(),
metrics=['accuracy'])
model.fit(x_train, y_train,
batch_size=batch_size,
epochs=20,
verbose=1,
validation_data=(x_test, y_test),
callbacks=[stoplearn])
score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
它是使用Keras用Python编写的。
发布于 2017-09-06 23:46:17
您将数据分为两类(因为您的输出层的大小为2),因此0.5的精度并不高。实际上,这意味着你的网络行为是随机的,这是你一开始所期望的。关于损失,没有绝对的答案。您的测试精度似乎还不错,您可以尝试使用一些参数(例如,对完全连接的层采用较小的大小),看看是否可以提高它。
发布于 2017-09-07 14:45:44
你有两个类。随机选择将导致50%的准确率。这就是你在一开始得到的。因此,您的结果是可以预期的。
它直接跳到70%准确率的原因可能是你的问题很简单。
如果你想再检查一遍,你可以
https://stackoverflow.com/questions/46079058
复制相似问题