Я использовал keras для реализации моего собственного слоя с conv2d, и произошла ошибка IndexError: list index вне диапазона - PullRequest
0 голосов
/ 13 декабря 2018

Я использовал keras для реализации моего собственного уровня с conv2d, и произошла ошибка IndexError: list index вне диапазона. Я хочу реализовать K.conv2d на своем собственном определенном уровне и вызвать свою собственную ячейку на уровне RNN.

from keras import backend as K
import keras
from keras.engine.topology import Layer
from sklearn import preprocessing
from keras.layers import Layer, Dense, Dropout, Activation,RNN
from keras.models import Sequential
import numpy as np
import pandas as pd
import tensorflow as tf
from keras.layers import Input, Dense
from keras.models import Model


class MyLayercell(keras.layers.Layer):
    def __init__(self, units, **kwargs):
        self.units = units
        self.state_size = units
        super(MyLayercell, self).__init__(**kwargs)

def build(self, input_shape):
    self.keral = self.add_weight(name='keral',
                      shape=(3,3,1,1),
                      initializer='uniform',
                     )
    self.built = True
def call(self, inputs, states):
    r=K.conv2d(inputs,self.keral, padding='same')
    return r,[r]

cell = MyLayercell(1100)
x = keras.Input((100,11))
layer = RNN(cell)
y = layer(x)

An IndexError: list index out of range error occurred.
  File "F:/PyCharm Community Edition 183.2153.9/secgru/mylayer.py", line 156, in <module>
    y = layer(x)
  File "D:\Anaconda3\lib\site-packages\keras\layers\recurrent.py", line 532, in __call__
    return super(RNN, self).__call__(inputs, **kwargs)
  File "D:\Anaconda3\lib\site-packages\keras\engine\base_layer.py", line 457, in __call__
    output = self.call(inputs, **kwargs)
  File "D:\Anaconda3\lib\site-packages\keras\layers\recurrent.py", line 649, in call
    input_length=timesteps)
  File "D:\Anaconda3\lib\site-packages\keras\backend\tensorflow_backend.py", line 2922, in rnn
    outputs, _ = step_function(inputs[0], initial_states + constants)
  File "D:\Anaconda3\lib\site-packages\keras\layers\recurrent.py", line 640, in step
    return self.cell.call(inputs, states, **kwargs)
  File "F:/PyCharm Community Edition 183.2153.9/secgru/mylayer.py", line 113, in call
    r=K.conv2d(inputs,self.keral, padding='same')
  File "D:\Anaconda3\lib\site-packages\keras\backend\tensorflow_backend.py", line 3650, in conv2d
    data_format=tf_data_format)
  File "D:\Anaconda3\lib\site-packages\tensorflow\python\ops\nn_ops.py", line 779, in convolution
    data_format=data_format)
  File "D:\Anaconda3\lib\site-packages\tensorflow\python\ops\nn_ops.py", line 828, in __init__
    input_channels_dim = input_shape[num_spatial_dims + 1]
  File "D:\Anaconda3\lib\site-packages\tensorflow\python\framework\tensor_shape.py", line 616, in __getitem__
    return self._dims[key]
IndexError: list index out of range

Я не могу найти проблему и надеюсь получить помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...