tensorflow2.0实战01:DNN

本文介绍了使用Keras进行深度学习的基础知识,包括Dense层参数解释,以及鸢尾花分类案例。通过案例展示了如何构建一个简单的神经网络模型,包括输入层、隐藏层和输出层,并使用鸢尾花数据集进行训练。在训练过程中,针对可能出现的`ValueError: logits and labels must have the same shape`错误,提供了解决方案,即调整输入数据的形状或神经网络的输出维度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考资料:
深度学习:Keras入门(一)之基础篇

1 Keras基础

1.1 Keras的模块结构

在这里插入图片描述

2 案例

2.1 Dense()层参数

units:正整数,输出空间维度,有几个神经元
input_shape:即张量的形状
input_dim:代表张量的维度
input_length:代表序列长度,可以理解成有多少个样本
[[1],[2],[3]] 这个张量的shape为(3,1),input_dim为2
[[[1,2],[3,4]],[[5,6],[7,8]],[[9,10],[11,12]]]这个张量的shape为(3,2,2),input_dim为2
[1,2,3,4]这个张量的shape为(4,),input_dim为1

2.2 鸢尾花的分类案例

from tensorflow.keras.layers import *
from sklearn.datasets import load_iris
#导入数据
iris = load_iris()
data = iris.data
target= iris.target
train_x,test_x,train_y,test_y=train_test_split(data,target,test_size=0.25)
'''
train_x.shape:(122,4)
train_y:(122,)

这里需要把train_y和test_y转化成one-hot一下,
因为神经网络softmax输出的shape是(None,3),而y的shape是(None,1),
此时会报错:
ValueError: `logits` and `labels` 
must have the same shape, received ((None, 3) vs (None, 1)).
'''
train_y = (np.arange(3)==train_y[:,None]).astype(int) #3是因为这是一个三分类问题
test_y = (np.arange(3)==test_y[:,None]).astype(int)
#step1:选择模型
model = tf.keras.Sequential()
#step2:构建网络
model.add(Dense(16,input_shape=(4,),activation='relu'))
model.add(Dense(8,activation='relu'))
model.add(Dense(3,activation='softmax'))
#step3:编译
model.compile(loss='categorical_crossentropy',optimizer='rmsprop',metrics=['accuracy'])
#step4:训练
b_size = 10
max_epochs = 100
print("Starting training ")
h = model.fit(train_x,train_y,batch_size=b_size, epochs=max_epochs)
print("Training finished \n")

如果遇到ValueError: logits and labels ,must have the same shape, received ((None, 3) vs (None, 1))。
要么就是把input的shape从(None, 1)改成(None, 3);要么把神经网络output的shape从(None, 3)改成(None, 1),如可以用argmax取出最大值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值