colab进行keras入门随机数和标签的一点思考,例如shape和Dense等

keras官方中文文档

pip install keras

from keras import layers
from keras import models

model.add(layers.Dense(32,activation='relu',input_shape=(100,)))# 添加多个Dense层
model.add(layers.Dense(10,activation='softmax'))
model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy'])# 编译模型


import numpy as np

# 创建随机数据
data = np.random.random((1000, 100)) #1000100列矩阵
labels = np.random.randint(10, size=(1000, 1)) # 1000行一列矩阵,所以元素都是[0,10)直接
print(data)

print(labels)

import keras
# 将标签转化为one-hot编码
one_hot_labels = keras.utils.to_categorical(labels, num_classes=10)
print(one_hot_labels)

# 训练模型
model.fit(data, one_hot_labels, epochs=10, batch_size=32)

# 测试数据
test_data = np.random.random((100,100))
test_label= np.random.randint(10,size=(100,1))
test_one_hot_labels = keras.utils.to_categorical(test_label,num_classes=10)


# 评估模型在测试数据上的性能
score = model.evaluate(test_data, test_one_hot_labels, batch_size=32)
print("损失值:", score[0])
print("精确值:", score[1])

# 创建随机输入数据
data = np.random.random((1, 100))

# 进行预测
predictions = model.predict(data)
print("预测结果:", predictions)
print(data)
print(len(predictions[0]))

上面部分代码是在colab是逐部分执行的,所以看起来不符合完整文件的风格。
在这里插入图片描述

细节部分注意点

部分内容详细见官方文档部分:
https://keras-zh.readthedocs.io/getting-started/sequential-model-guide/

1.如果from keras import layers,那么layers.Dense()定义一个层。
如果from keras.layers import Dense,那么Dense()即可,这些只需看看即可,了解python的应该很容易明白。官方文档
了

2.input_shape和input_dim

关于input_shape和input_dim。其中dim是dimension(维度)的意思。我们注意到input_shape(100,)这里的逗号,那是因为keras里面数据以张量形式存在(可以理解为一个列/行向量),
例如:[[1],[2],[3]] 这个张量的shape为(3,1)
[[[1,2],[3,4]],[[5,6],[7,8]],[[9,10],[11,12]]]这个张量的shape为(3,2,2),
[1,2,3,4]这个张量的shape为(4,)。
所以我们可以认为input_shape(100,)表示传入的每个数据都是100维的张量
这也契合了我们下面代码中的data = np.random.random((1000, 100)) ,表示1000行100列矩阵,这里的100列就和前面input_shape(100,)匹配上了
查阅官方文档可知:
在这里插入图片描述

3

one_hot_labels = keras.utils.to_categorical(labels, num_classes=10)

这部分代码理解可以参考我的另外一篇博客:keras框架的to_categorical方法

4

Dense(32,activation=‘relu’,input_shape=(100,)))和Dense(10,activation=‘softmax’))的输入输出理解:输入的是(,16)的输入数组,第一层输出的是(,32),同时作为第二层的输入,第二层的输出是(*,10)
我们给每层加上名字,调用summary()方法即可了解到每层输出的shape,注意这里的None,这里是给batch_size预留的位置,因为模型不知道你输入的数据每次批量是多少,所以干脆使用None占位了。
参考链接:keras的shape
在这里插入图片描述

在这里插入图片描述

5

# 创建随机输入数据
data = np.random.random((1, 100))

# 进行预测
predictions = model.predict(data)
print("预测结果:", predictions)
print(data)
print(len(predictions[0]))

预测的输入数据为1个100维的张量,在第二个Dense层中model.add(layers.Dense(10,activation=‘softmax’)),激活函数为softmax,这个是处理多类别分类问题的函数,10表示我们第二个隐藏层有10个神经元,换句话说我们输出的种类有10种,所以我们这个数据结果为10维,他们的概率和加起来为1,注意,我们应该意识到,这10个类别,实际上是标签,所以预测结果实际上是10个类别的各自概率是多少。
在这里插入图片描述
虽然keras封装的很好,写个简单的随机数标签问题只需要几行代码,如果可以登录colab则连环境都不用配置。但是其中需要琢磨的细节还是不少的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值