Keras神经网络全连接层多分类问题的训练损失、验证损失和训练精度、验证精度

17 阅读3分钟

def fig_acc(history):

history_dict = history.history

acc = history_dict['accuracy']

val_acc = history_dict['val_accuracy']

epochs = range(1, len(acc) + 1)

plt.plot(epochs, acc, 'g:', label='Training acc')

plt.plot(epochs, val_acc, 'r-', label='Validation acc')

plt.title('Training and validation accuracy')

plt.xlabel('Epochs')

plt.ylabel('Accuracy')

plt.legend()

plt.grid()

plt.show()

def predict(network):

print('泛化预测新数据:')

x_new, y_new = dummy_data(20, 4)

y_predict = network.predict_classes(x_new)

for i in range(len(x_new)):

print("数据=%s 正确分类:%s 预测分类:%s" % (x_new[i], y_new[i], y_predict[i]))

def dense():

MY_LAYER_NAME = 'layer_1'

MY_UNIT = 4

MY_SHAPE = (2,)

network = models.Sequential()

layer1 = Dense(name=MY_LAYER_NAME, units=MY_UNIT * 2, activation='relu', input_shape=MY_SHAPE)

network.add(layer1)

layer2 = Dense(units=MY_UNIT, activation="softmax")

network.add(layer2)

network.compile(loss="categorical_crossentropy",

optimizer=optimizers.RMSprop(lr=0.001),

metrics=['accuracy'])

训练数据

x_train, y_train = dummy_data(3000, MY_UNIT)

y_train = keras.utils.to_categorical(y_train)

验证数据

x_val, y_val = dummy_data(800, MY_UNIT)

y_val = keras.utils.to_categorical(y_val)

my_fit_history = network.fit(x_train, y_train, epochs=60, verbose=1, validation_data=(x_val, y_val))

绘制训练损失和验证损失

fig_loss(my_fit_history)

绘制训练精度和验证精度

fig_acc(my_fit_history)

x_test, y_test = dummy_data(100, 4)

results = network.evaluate(x_test, keras.utils.to_categorical(y_test))

print('训练结束,评估模型->')

print('损失:')

print(results[0])

print('精度:')

print(results[1])

利用训练好的模型泛化预测前所未知的新数据分类

predict(network)

if name == "main":

dense()

程序实现意图:生成四种聚类数据散点,然后训练这批数据。训练完成后用模型泛化预测新的数据散点。

预训练数据集:

用来验证的数据集:

训练过程中的训练损失和验证损失:

训练精度和验证精度:

代码运行后的部分输出:

训练结束,评估模型->

损失:

0.04747089475393295

精度:

0.9900000095367432

总结

学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!

最后如何才能让我们在面试中对答如流呢?

答案当然是平时在工作或者学习中多提升自身实力的啦,那如何才能正确的学习,有方向的学习呢?有没有免费资料可以借鉴?为此我整理了一份Android学习资料路线:

这里是一部分我工作以来以及参与过的大大小小的面试收集总结出来的一套BAT大厂面试资料专题包,在这里免费分享给大家,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家。需要的小伙伴们可以点击我的GitHub获取免费领取方式

好了,今天的分享就到这里,如果你对在面试中遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划,可以去我的主页加一下技术群。来看看同行们都是如何突破现状,怎么学习的,来吸收他们的面试以及工作经验完善自己的之后的面试计划及职业规划。

最后,祝愿即将跳槽和已经开始求职的大家都能找到一份好的工作!

这些只是整理出来的部分面试题,后续会持续更新,希望通过这些高级面试题能够降低面试Android岗位的门槛,让更多的Android工程师理解Android系统,掌握Android系统。喜欢的话麻烦点击一个喜欢再关注一下~