tensorflow2.0实战01:DNN

参考资料:
深度学习: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取出最大值。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值