睿智的keras深度学习(一)——阈值逻辑单元和多层感知机

系列文章往期回顾

睿智的keras深度学习(零)——keras使用时可能遇到的参数及含义


经历过机器学习的洗礼,我们现在对于数据已经具备了一定的敏感度,现在我们趁热打铁进行深度学习的学习。

博主之前机器学习的专题合集:机器学习学习路线及知识汇总

阈值逻辑单元(TLU)

阈值逻辑单元(感知器)是ANN最简单的模型之一,其输出仅是由输入值的加权加上偏置后经阶跃函数激活后的值

采用鸢尾花作为数据集对阈值逻辑单元测试

import numpy as np
from sklearn.datasets import load_iris
from sklearn.linear_model import Perceptron
​
iris = load_iris()
X = iris.data[:, (2, 3)]
y = (iris.target == 0).astype(np.int)
​
per_clf = Perceptron()
per_clf.fit(X, y)
​
y_pred = per_clf.predict([[2, 0.5]])
y_pred

运行结果:array([0])

多层感知机(MLP)

由于单层感知机具有局限性,比如不能很好的解决异或问题或者其他复杂问题,这时采用多个感知机的叠加会有效的解决单层感知机的不足

加载fashion_mnist数据集

from keras.datasets import fashion_mnist
​
(X_train_full, y_train_full), (X_test, y_test) = fashion_mnist.load_data()
X_valid, X_train = X_train_full[:5000] / 255.0, X_train_full[5000:] / 255.0
y_valid, y_train = y_train_full[:5000], y_train_full[5000:]
class_names = ["T-shirt/top", "Trouser", "Pullover", "Dress", "Coat", "Sandal", "Shirt", "Sneaker", "Bag", "Ankle boot"]
import matplotlib.pyplot as plt
​
plt.imshow(X_train[0])
plt.show()

运行结果:
在这里插入图片描述

class_names[y_train[0]]

运行结果:
‘Coat’

构造多层感知机(多个Dense层叠加)

from keras.models import Sequential
from keras.layers import Dense, Flatten
​
model = Sequential()
model.add(Flatten(input_shape=[28, 28]))
model.add(Dense(300, activation="relu"))
model.add(Dense(100, activation="relu"))
model.add(Dense(10, activation="softmax"))
​
model.summary()

运行结果:
在这里插入图片描述

显示模型结构

from keras.utils.vis_utils import plot_model

plot_model(model)

在这里插入图片描述

从细节观测模型

查看模型各个层

model.layers

在这里插入图片描述

查看第1层(从0开始)

hidden1 = model.layers[1]
hidden1.name

运行结果:‘dense’

model.get_layer('dense') is hidden1

运行结果:True

权值和偏置

weigths, biaes = hidden1.get_weights()
print(weigths)
print(biaes)

在这里插入图片描述
在keras中初始的权值是随机生成的,而偏置全部为0

print(weigths.shape)
print(biaes.shape)

在这里插入图片描述

训练模型

model.compile(loss="sparse_categorical_crossentropy", optimizer="sgd", metrics=["accuracy"])
history = model.fit(X_train, y_train, epochs=30, validation_data=(X_valid, y_valid))

这里compile中参数代表的含义可以参照:

睿智的keras深度学习(零)——keras使用时可能遇到的参数及含义(持续更新

损失值和精度实例化

import pandas as pd
import matplotlib.pyplot as plt

pd.DataFrame(history.history).plot(figsize=(8, 5))
plt.grid()
plt.gca().set_ylim(0, 1)
plt.show()

在这里插入图片描述

模型评估

model.evaluate(X_test, y_test)

在这里插入图片描述

选取实例进行验证

X_new = X_test[:3]
y_proba = model.predict(X_new)
y_proba.round(2)

在这里插入图片描述

np.array(class_names)[np.argmax(y_proba, axis=1)]

在这里插入图片描述

plt.imshow(X_test[0])
plt.show()

在这里插入图片描述

plt.imshow(X_test[1])
plt.show()

在这里插入图片描述

plt.imshow(X_test[2])
plt.show()

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾醒(AiXing-w)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值