Я использовал 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
Я не могу найти проблему и надеюсь получить помощь.