机器学习实战(一)Keras 人工神经网络简介

1.使用顺序api建立神经网络

1.1 基本模型结构

使用的数据集是mnist数据集

fashion_mnist=keras.datasets.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:]

1.1.1 逐层添加

import keras.models
from keras.layers import Dense

#先创建顺序模型
model=keras.models.Sequential()
#添加到模型中
model.add(keras.layers.Flatten(input_shape=[28,28]))
model=keras.models.Sequential()
print(model)
print(model.summary())

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

1.1.2 传递一个层列表

或者是直接在序列中传递一个列表

model=keras.models.Sequential([keras.layers.Flatten(input_shape=[28,28]),keras.layers.Dense(300,activation='relu')])
print(model)
print(model.summary())

1.2 查看层结构的常用方法

1.2.1 model.summary()

在这里插入图片描述

1.2.2 model.layers

可以获得层列表,按其索引获取层,也可以按名称获取
在这里插入图片描述

1.2.2.1 获得层的名字
h1=model.layers[1]
print(h1.name)

输出
dense

可以通过这种方式获得层名字

1.2.2.1 获得层的权重和bias

通过对指定层使用get_weights()来获得相应的权重和bias

weight,bias=h1.get_weights()
print(weight)

在这里插入图片描述

权重矩阵的形状取决于输入的形状

1.2. 编译模型

model.compile(loss="sparse_categorical_crossentropy",optimizer='sgd',metrics=['accuracy'])

需要指定:
①损失函数
②优化器

1.3. 训练和评估模型

history=model.fit(X_train,y_train,epochs=30,validation_data=(X_valid,y_valid))

只用了两个层效果比较差
在这里插入图片描述

1.3.1 传递验证集

validation_data=(X_valid,y_valid)直接传递验证集
model.fit(X_train,y_train,epochs=30,validation_data=(X_valid,y_valid))

validation_split=0.1设置用于验证的训练集比例
model.fit(X_train,y_train,epochs=30,validation_split=0.1)

1.4 训练结果

1.4.1展示训练结果

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

1.4.2 调整

(1)首先检查学习率
(2)尝试使用优化器
(3)调整超参数

1.4.3 在测试集上评估误差

model.evaluate(X_test,y_test)

2.报错

2.1 AttributeError: module ‘keras.datasets’ has no attribute ‘fashion_mnist’

在这里插入图片描述

import keras.datasets

将上面的代码改为:
from tensorflow import keras

3. 函数式API

3.1 层结构

3.1.1 concatenate层

keras.layers.Concatenate()[(input(),hidden2]

使用列表传入合并的层

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值