Matix экспоненциальный слой (Custom: Keras в R) - PullRequest
3 голосов
/ 11 марта 2020

Я пытаюсь сделать слой в Керасе (R), который (матрица) экспоненциальный слой формы (d, d).

ie. : Вход в слой представляет собой матрицу dxd, а выход - матрицу dxd, которая является (матрицей) экспоненциальной матрицы ввода.

Что я реализовал на сегодняшний день:

Вот что я сделал (это приближение степени 4, потому что я также не уверен, как получить матричную команду тензорного потока , работающую в Керасе):

  # Matrix Exponential
Matrix_Exp<- R6::R6Class("KerasLayer",

                         inherit = KerasLayer,

                         public = list(

                           call = function(x, mask = NULL) {
                             # Initialize Tenor-like Object -> Tensor Objects
                             ord0 = k_eye((k_shape(x)[1]))
                         ord1 = x
                         ord2 = (1/2)*k_dot(x,x) # note x is square so this works
                         ord3 = (1/6)*k_dot(x,ord2)
                         ord4 = (1/24)*k_dot(x,ord3)
                          ord0+ord1+ord2 +ord3+ord4
                           },

                           compute_output_shape = function(input_shape) {
                             c(d,d)
                           }
                         )
)
# Create layer wrapper function
layer_Matrix_Exp <- function(object) {
  create_layer(Matrix_Exp, object)
}

Я подключаю модель с этой сводкой к пользовательскому слою:

Model: "sequential_32"
_________________________________________________________________________________________________________________________________________________________________
Layer (type)                                                            Output Shape                                                    Param #                  
=================================================================================================================================================================
dense_63 (Dense)                                                        (None, 100)                                                     400                      
_________________________________________________________________________________________________________________________________________________________________
dense_64 (Dense)                                                        (None, 4)                                                       404                      
_________________________________________________________________________________________________________________________________________________________________
reshape_10 (Reshape)                                                    (None, 2, 2)                                                    0                        
=================================================================================================================================================================
Total params: 804
Trainable params: 804
Non-trainable params: 0
_________________________________________________________________________________________________________________________________________________________________

Проблема / Ошибка:

Но я сталкиваюсь с этой ошибкой при прохождении layers_NE %>% layer_Matrix_Exp

WARNING:tensorflow:Entity <function wrap_fn.<locals>.fn at 0x7fbdd0cf2b90> could not be transformed and will be executed as-is. Please report this to the AutoGraph team. When filing the bug, set the verbosity to 10 (on Linux, `export AUTOGRAPH_VERBOSITY=10`) and attach the full output. Cause: Evaluation error: object 'size' not found.
 Error in py_call_impl(callable, dots$args, dots$keywords) : 
  RuntimeError: in converted code:

    /scratch/users/BIM/R/x86_64-redhat-linux-gnu-library/3.6/keras/python/kerastools/layer.py:30 call  *
        return self.r_call(inputs, mask)
    <string>:4 fn

    /scratch/users/BIM/R/x86_64-redhat-linux-gnu-library/3.6/reticulate/python/rpytools/call.py:21 python_function
        raise RuntimeError(res[kErrorKey])

    RuntimeError: Evaluation error: object 'size' not found. 

Примечание:

  • Проблема связана с идентификационной частью, но я не знаю, как это исправить.

Вопрос:

Заранее спасибо.

...