我正在训练一个神经网络,以识别.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编写。
答案 0 :(得分:5)
您将数据分为两类(因为您的输出图层大小为2),因此精度为0.5并不高。实际上,这意味着您的网络随机运行,这是您在开始时所期望的。关于损失,没有绝对的答案。您的测试精度似乎并不差,您可以尝试使用某些参数(例如,为完全连接的图层调整较小的尺寸),看看是否可以改进它。
答案 1 :(得分:1)
你有两节课。随机选择将导致50%的准确性。这是你在一开始就得到的。因此,您的结果是预期的。
它直接跳到70%准确度的原因可能是你的问题很简单。
如果你想仔细检查一下,你可以