浅谈Keras参数 input_shape、input_dim和input_length用法

在keras中,数据是以张量的形式表示的,不考虑动态特性,仅考虑shape的时候,可以把张量用类似矩阵的方式来理解。

例如

[[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:即张量的shape。从前往后对应由外向内的维度。

input_length:代表序列长度,可以理解成有多少个样本

input_dim:代表张量的维度,(很好理解,之前3个例子的input_dim分别为2,3,1)

通过input_length和input_dim这两个参数,可以直接确定张量的shape。

常见的一种用法:

只提供了input_dim=32,说明输入是一个32维的向量,相当于一个一阶、拥有32个元素的张量,它的shape就是(32,)。

因此,input_shape=(32, )

补充知识:keras中的shape/input_shape

在keras中,数据是以张量的形式表示的,张量的形状称之为shape,表示从最外层向量逐步到达最底层向量的降维解包过程。“维”的也叫“阶”,形状指的是维度数和每维的大小。

比如,一个一阶的张量[1,2,3]的shape是(3,);

一个二阶的张量[[1,2,3],[4,5,6]]的shape是(2,3);

一个三阶的张量[[[1],[2],[3]],[[4],[5],[6]]]的shape是(2,3,1)

input_shape就是指输入张量的shape。

例如,input_dim=784,dim是指dimension(维度),说明输入是一个784维的向量,784维的向量怎么表示呢?[[...[1],[2],[3]]...],左边有784个左括号,这相当于一个一阶的张量,它的shape就是(784,)。

因此,input_shape=(784,)。

以上这篇浅谈Keras参数 input_shape、input_dim和input_length用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Keras—embedding嵌入层的用法详解

    最近在工作中进行了NLP的内容,使用的还是Keras中embedding的词嵌入来做的. Keras中embedding层做一下介绍. 中文文档地址:https://keras.io/zh/layers/embeddings/ 参数如下: 其中参数重点有input_dim,output_dim,非必选参数input_length. 初始化方法参数设置后面会单独总结一下. demo使用预训练(使用百度百科(word2vec)的语料库)参考 embedding使用的demo参考: def creat

  • 使用keras实现BiLSTM+CNN+CRF文字标记NER

    我就废话不多说了,大家还是直接看代码吧~ import keras from sklearn.model_selection import train_test_split import tensorflow as tf from keras.callbacks import ModelCheckpoint,Callback # import keras.backend as K from keras.layers import * from keras.models import Model

  • Keras-多输入多输出实例(多任务)

    1.模型结果设计 2.代码 from keras import Input, Model from keras.layers import Dense, Concatenate import numpy as np from keras.utils import plot_model from numpy import random as rd samples_n = 3000 samples_dim_01 = 2 samples_dim_02 = 2 # 样本数据 x1 = rd.rand(s

  • keras 自定义loss层+接受输入实例

    loss函数如何接受输入值 keras封装的比较厉害,官网给的例子写的云里雾里, 在stackoverflow找到了答案 You can wrap the loss function as a inner function and pass your input tensor to it (as commonly done when passing additional arguments to the loss function). def custom_loss_wrapper(input_

  • 浅谈Keras参数 input_shape、input_dim和input_length用法

    在keras中,数据是以张量的形式表示的,不考虑动态特性,仅考虑shape的时候,可以把张量用类似矩阵的方式来理解. 例如 [[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:即张量的shape.从前往后对应由外向内的维度. input_length:代表序列长度,可以理解成有多少个

  • 浅谈keras中的Merge层(实现层的相加、相减、相乘实例)

    [题目]keras中的Merge层(实现层的相加.相减.相乘) 详情请参考: Merge层 一.层相加 keras.layers.Add() 添加输入列表的图层. 该层接收一个相同shape列表张量,并返回它们的和,shape不变. Example import keras input1 = keras.layers.Input(shape=(16,)) x1 = keras.layers.Dense(8, activation='relu')(input1) input2 = keras.la

  • 浅谈keras通过model.fit_generator训练模型(节省内存)

    前言 前段时间在训练模型的时候,发现当训练集的数量过大,并且输入的图片维度过大时,很容易就超内存了,举个简单例子,如果我们有20000个样本,输入图片的维度是224x224x3,用float32存储,那么如果我们一次性将全部数据载入内存的话,总共就需要20000x224x224x3x32bit/8=11.2GB 这么大的内存,所以如果一次性要加载全部数据集的话是需要很大内存的. 如果我们直接用keras的fit函数来训练模型的话,是需要传入全部训练数据,但是好在提供了fit_generator,

  • 浅谈keras使用预训练模型vgg16分类,损失和准确度不变

    问题keras使用预训练模型vgg16分类,损失和准确度不变. 细节:使用keras训练一个两类数据,正负比例1:3,在vgg16后添加了几个全链接并初始化了.并且对所有层都允许训练. 但是准确度一直是0.75. 数据预先处理已经检查过格式正确 再将模型中relu改成sigmoid就正常了. 数据处理程序 import os import pickle import numpy as np import DataFile import SelectiveSearch import Generat

  • 浅谈keras保存模型中的save()和save_weights()区别

    今天做了一个关于keras保存模型的实验,希望有助于大家了解keras保存模型的区别. 我们知道keras的模型一般保存为后缀名为h5的文件,比如final_model.h5.同样是h5文件用save()和save_weight()保存效果是不一样的. 我们用宇宙最通用的数据集MNIST来做这个实验,首先设计一个两层全连接网络: inputs = Input(shape=(784, )) x = Dense(64, activation='relu')(inputs) x = Dense(64,

  • 浅谈keras中的目标函数和优化函数MSE用法

    mean_squared_error / mse 均方误差,常用的目标函数,公式为((y_pred-y_true)**2).mean() model = Sequential() model.add(Dense(64, init='uniform', input_dim=10)) model.add(Activation('tanh')) model.add(Activation('softmax')) sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, ne

  • 浅谈keras中自定义二分类任务评价指标metrics的方法以及代码

    对于二分类任务,keras现有的评价指标只有binary_accuracy,即二分类准确率,但是评估模型的性能有时需要一些其他的评价指标,例如精确率,召回率,F1-score等等,因此需要使用keras提供的自定义评价函数功能构建出针对二分类任务的各类评价指标. keras提供的自定义评价函数功能需要以如下两个张量作为输入,并返回一个张量作为输出. y_true:数据集真实值组成的一阶张量. y_pred:数据集输出值组成的一阶张量. tf.round()可对张量四舍五入,因此tf.round(

  • 浅谈keras 的抽象后端(from keras import backend as K)

    keras后端简介: Keras 是一个模型级库,为开发深度学习模型提供了高层次的构建模块.它不处理诸如张量乘积和卷积等底层操作,目的也就是尽量不重复造轮子. 但是底层操作还是需要的, 所以keras 依赖于一个专门的.优化的张量操作库来完成这个操作. 我们可以简单的认为这是 Keras 的「后端引擎」, keras 有三个后端实现可用 . 即: TensorFlow 后端,Theano 后端,CNTK 后端. 如果你需要修改你的后端, 只要将字段 backend 更改为 theano 或 cn

  • 浅谈Keras的Sequential与PyTorch的Sequential的区别

    深度学习库Keras中的Sequential是多个网络层的线性堆叠,在实现AlexNet与VGG等网络方面比较容易,因为它们没有ResNet那样的shortcut连接.在Keras中要实现ResNet网络则需要Model模型. 下面是Keras的Sequential具体示例: 可以通过向Sequential模型传递一个layer的list来构造该模型: from keras.models import Sequential from keras.layers import Dense, Acti

  • 浅谈keras.callbacks设置模型保存策略

    如下所示: keras.callbacks.ModelCheckpoint(self.checkpoint_path, verbose=0, save_weights_only=True,mode="max",save_best_only=True), 默认是每一次poch,但是这样硬盘空间很快就会被耗光. 将save_best_only 设置为True使其只保存最好的模型,值得一提的是其记录的acc是来自于一个monitor_op,其默认为"val_loss",其

随机推荐