解决keras加入lambda层时shape的问题

使用keras时,加入keras的lambda层以实现自己定义的操作。但是,发现操作结果的shape信息有问题。

我的后端是theano,使用了sum操作。

比如输入时,shape为(32,28,28),其中32为batch大小。

此时对应的ndim应该等于3。

但是,lambda处理后结果显示_keras_shape为(32,28,28),而ndim却是2。

这导致后边各项操作都会出现问题。

此处sum函数加入参数keepdims=True即可。

此注意keras中的各种层几乎都不用去理会batch的大小,系统会自动在shape中加入None占位,所以很多参数也不用加入batch的大小。但是进行sum等操作时,选择按照哪个axis进行操作,要考虑batch的存在。

补充知识:keras Merge or merge

在使用keras merge层时,发现有Merge 、merge两种:

from keras.layers import Merge

from keras.layers import merge

使用第一种是报错

“TensorVariable object has no attribute 'get_output_shape_at' ”

使用第二种小写即可。

以上这篇解决keras加入lambda层时shape的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Keras自定义IOU方式

    我就废话不多说了,大家还是直接看代码吧! def iou(y_true, y_pred, label: int): """ Return the Intersection over Union (IoU) for a given label. Args: y_true: the expected y values as a one-hot y_pred: the predicted y values as a one-hot or softmax output label:

  • keras多显卡训练方式

    使用keras进行训练,默认使用单显卡,即使设置了os.environ['CUDA_VISIBLE_DEVICES']为两张显卡,也只是占满了显存,再设置tf.GPUOptions(allow_growth=True)之后可以清楚看到,只占用了第一张显卡,第二张显卡完全没用. 要使用多张显卡,需要按如下步骤: (1)import multi_gpu_model函数:from keras.utils import multi_gpu_model (2)在定义好model之后,使用multi_gpu

  • 浅谈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 多gpu并行运行案例

    一.多张gpu的卡上使用keras 有多张gpu卡时,推荐使用tensorflow 作为后端.使用多张gpu运行model,可以分为两种情况,一是数据并行,二是设备并行. 二.数据并行 数据并行将目标模型在多个设备上各复制一份,并使用每个设备上的复制品处理整个数据集的不同部分数据. 利用multi_gpu_model实现 keras.utils.multi_gpu_model(model, gpus=None, cpu_merge=True, cpu_relocation=False) 具体来说

  • keras 解决加载lstm+crf模型出错的问题

    错误展示 new_model = load_model("model.h5") 报错: 1.keras load_model valueError: Unknown Layer :CRF 2.keras load_model valueError: Unknown loss function:crf_loss 错误修改 1.load_model修改源码:custom_objects = None 改为 def load_model(filepath, custom_objects, c

  • 解决keras加入lambda层时shape的问题

    使用keras时,加入keras的lambda层以实现自己定义的操作.但是,发现操作结果的shape信息有问题. 我的后端是theano,使用了sum操作. 比如输入时,shape为(32,28,28),其中32为batch大小. 此时对应的ndim应该等于3. 但是,lambda处理后结果显示_keras_shape为(32,28,28),而ndim却是2. 这导致后边各项操作都会出现问题. 此处sum函数加入参数keepdims=True即可. 此注意keras中的各种层几乎都不用去理会ba

  • 解决Keras中Embedding层masking与Concatenate层不可调和的问题

    问题描述 我在用Keras的Embedding层做nlp相关的实现时,发现了一个神奇的问题,先上代码: a = Input(shape=[15]) # None*15 b = Input(shape=[30]) # None*30 emb_a = Embedding(10, 5, mask_zero=True)(a) # None*15*5 emb_b = Embedding(20, 5, mask_zero=False)(b) # None*30*5 cat = Concatenate(axi

  • Keras 使用 Lambda层详解

    我就废话不多说了,大家还是直接看代码吧! from tensorflow.python.keras.models import Sequential, Model from tensorflow.python.keras.layers import Dense, Flatten, Conv2D, MaxPool2D, Dropout, Conv2DTranspose, Lambda, Input, Reshape, Add, Multiply from tensorflow.python.ker

  • 解决keras.datasets 在loaddata时,无法下载的问题

    由于公司设置网络代理, mnist.load_data()失败,原因是公司的网络代理未设置导致. 解决办法: 直接在网上下载mnist.npz,放在本地,如:F盘根目录. 直接写: mnist.load_data("F:\mnist.npz") 即可~ 补充:解决Keras下,imdb.load_data(num_words=10000)无法下载数据集的问题 当我们按照deeplearning with python书里面的代码教程来时,往往会出现数据集下载失败的问题, 例如运行下面一

  • 解决Keras的自定义lambda层去reshape张量时model保存出错问题

    前几天忙着参加一个AI Challenger比赛,一直没有更新博客,忙了将近一个月的时间,也没有取得很好的成绩,不过这这段时间内的确学到了很多,就在决赛结束的前一天晚上,准备复现使用一个新的网络UPerNet的时候出现了一个很匪夷所思,莫名其妙的一个问题.谷歌很久都没有解决,最后在一个日语网站上看到了解决方法. 事后想想,这个问题在后面搭建网络的时候会很常见,但是网上却没有人提出解决办法,So, I think that's very necessary for me to note this.

  • 解决Keras 中加入lambda层无法正常载入模型问题

    刚刚解决了这个问题,现在记录下来 问题描述 当使用lambda层加入自定义的函数后,训练没有bug,载入保存模型则显示Nonetype has no attribute 'get' 问题解决方法: 这个问题是由于缺少config信息导致的.lambda层在载入的时候需要一个函数,当使用自定义函数时,模型无法找到这个函数,也就构建不了. m = load_model(path,custom_objects={"reduce_mean":self.reduce_mean,"sli

  • 解决Keras 自定义层时遇到版本的问题

    在2.2.0版本前, from keras import backend as K from keras.engine.topology import Layer class MyLayer(Layer): def __init__(self, output_dim, **kwargs): self.output_dim = output_dim super(MyLayer, self).__init__(**kwargs) def build(self, input_shape): # 为该层

  • keras 使用Lambda 快速新建层 添加多个参数操作

    keras许多简单操作,都需要新建一个层,使用Lambda可以很好完成需求. # 额外参数 def normal_reshape(x, shape): return K.reshape(x,shape) output = Lambda(normal_reshape, arguments={'shape':(-1, image_seq, 1000)})(output) output = Lambda(lambda inp: K.mean(inp, axis=1), output_shape=(10

  • jQuery对话框插件ArtDialog在双击遮罩层时出现关闭现象的解决方法

    本文实例讲述了jQuery对话框插件ArtDialog在双击遮罩层时出现关闭现象的解决方法.分享给大家供大家参考,具体如下: 大家都知道,ArtDialog是一款非常不错的.轻量级的.基于jQuery的对话框插件,深受大家的追捧,大伙可以到一下地址进行下载: https://code.google.com/p/artdialog/ https://github.com/aui/artDialog 截止到2014年9月17日,已经有几个重大的版本v4.1.7.v5.0.4和v6.0.2,其中4.x

  • 完美解决keras保存好的model不能成功加载问题

    前两天调用之前用keras(tensorflow做后端)训练好model,却意外发现报错了!!之前从来没有过报错!!错误内容粘贴如下: File "h5py_objects.pyx", line 54, in h5py._objects.with_phil.wrapper (C:\Minonda\conda-bld\h5py_1496885653697\work\h5py_objects.c:2867) File "h5py_objects.pyx", line 5

随机推荐