如何获取 Keras 模型的运行时批量大小

佛罗里达人

基于这篇文章我需要一些基本的实施帮助。下面你会看到我使用 Dropout 层的模型。使用 noise_shape 参数时,碰巧最后一批不适合批量大小,从而产生错误(请参阅其他帖子)。

原型号:

def LSTM_model(X_train,Y_train,dropout,hidden_units,MaskWert,batchsize):
   model = Sequential()
   model.add(Masking(mask_value=MaskWert, input_shape=(X_train.shape[1],X_train.shape[2]) ))
   model.add(Dropout(dropout, noise_shape=(batchsize, 1, X_train.shape[2]) ))   
   model.add(Dense(hidden_units, activation='sigmoid', kernel_constraint=max_norm(max_value=4.) ))   
   model.add(LSTM(hidden_units, return_sequences=True, dropout=dropout, recurrent_dropout=dropout))  

现在 Alexandre Passos 建议使用tf.shape获取运行时批量大小我试图以不同的方式将运行时批量大小的想法实现到 Keras 中,但从未奏效。

   import Keras.backend as K

   def backend_shape(x):
       return K.shape(x)

   def LSTM_model(X_train,Y_train,dropout,hidden_units,MaskWert,batchsize):    
       batchsize=backend_shape(X_train)
       model = Sequential()
       ...
       model.add(Dropout(dropout, noise_shape=(batchsize[0], 1, X_train.shape[2]) )) 
       ...  

但这只是给了我输入张量形状而不是运行时输入张量形状。

我也尝试使用 Lambda 层

def output_of_lambda(input_shape):
   return (input_shape)

def LSTM_model_2(X_train,Y_train,dropout,hidden_units,MaskWert,batchsize):       
   model = Sequential()
   model.add(Lambda(output_of_lambda, outputshape=output_of_lambda))
   ...
   model.add(Dropout(dropout, noise_shape=(outputshape[0], 1, X_train.shape[2]) )) 

和不同的变种。但是正如您已经猜到的那样,这根本不起作用。模型定义实际上是正确的地方吗?你能给我一个提示还是更好地告诉我如何获得 Keras 模型的运行批量大小?非常感谢。

纽瑞克

当前实现确实根据运行时批处理大小进行调整。Dropout层实现代码

symbolic_shape = K.shape(inputs)
noise_shape = [symbolic_shape[axis] if shape is None else shape
               for axis, shape in enumerate(self.noise_shape)]

因此,如果您noise_shape=(None, 1, features)按照上面的代码给出形状将是 (runtime_batchsize, 1, features)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何批量获取中间Keras层的输出?

来自分类Dev

使用 fit_generator 时,Keras 模型的批量大小为 1

来自分类Dev

如何在运行时获取本机图像大小?

来自分类Dev

批量大小是如何确定的?

来自分类Dev

为什么预测需要Keras中的批量大小?

来自分类Dev

是否可以在keras层中获得批量大小

来自分类Dev

如何加载Keras模型?

来自分类Dev

RNN 从哪里获取批量大小?

来自分类Dev

获取Keras模型/层的输出

来自分类Dev

如何批量获得PC正常运行时间?

来自分类Dev

批量大小应如何定制?

来自分类Dev

循环运行时如何获取链接?

来自分类Dev

如何获取列名运行时

来自分类Dev

在Linux中使用“监视”运行时获取终端大小

来自分类Dev

如何正确设置Keras模型?

来自分类Dev

如何加载微调的Keras模型

来自分类Dev

批量插入时如何选择正确的批量大小

来自分类Dev

批量插入时如何选择正确的批量大小

来自分类Dev

在Keras中获取多输出模型的类

来自分类Dev

如何在运行时找到最大堆大小

来自分类Dev

如何动态分配固定的运行时大小的数组?

来自分类Dev

.NET CLR:运行时如何计算对象的大小?

来自分类Dev

如何使用Keras获取Inception v3模型的pool3功能?

来自分类Dev

在运行时设置向量的向量大小

来自分类Dev

获取运行时错误

来自分类Dev

在运行时使用keras从自动编码器模型的隐藏图层中保存要素

来自分类Dev

获取 0 作为堆栈分配数组的大小,其大小在运行时给出

来自分类Dev

Keras AveragePooling2D的运行时错误

来自分类Dev

iOS | 如何快速获取运行时图像的宽度/高度