Python 如何使用Keras Lambda层避免此错误?
我正在使用python中的Keras(Tensorflow)为训练数据集构建一个模型。我的输入层是一个形状为(?,4,3010,1)的张量,我想把它分成两个独立的张量(层),两个张量的形状都是(?,4,1005,1),然后继续构建模型 因此,我构建了如下模型:Python 如何使用Keras Lambda层避免此错误?,python,tensorflow,keras,Python,Tensorflow,Keras,我正在使用python中的Keras(Tensorflow)为训练数据集构建一个模型。我的输入层是一个形状为(?,4,3010,1)的张量,我想把它分成两个独立的张量(层),两个张量的形状都是(?,4,1005,1),然后继续构建模型 因此,我构建了如下模型: def build(window_size): model_input = Input(shape=(4, window_size*2, 1)) inp_1, inp_2 = Lambda(tf.split, argume
def build(window_size):
model_input = Input(shape=(4, window_size*2, 1))
inp_1, inp_2 = Lambda(tf.split, arguments={'axis': 2, 'num_or_size_splits': 2})(model_input)
c1 = Conv2D(64, kernel_size=(4, 8), padding='valid', input_shape=[4, window_size, 1])(inp_1)
c2 = Conv2D(64, kernel_size=(4, 8), padding='valid', input_shape=[4, window_size, 1])(inp_2)
......
我运行下面的代码:
model = build(1501)
然后我得到一个错误:
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-29-be3139d89e09> in <module>()
1
----> 2 model = build(1501)
3 plot_model(model_before_reconstructed, show_shapes=True)
4
<ipython-input-27-cb9ad78acbd0> in build_1(window_size, inp)
8 c1 = Conv2D(64, kernel_size=(4, 8), padding='valid', input_shape=[4, window_size, 1])(inp_1)
----> 9 c2 = Conv2D(64, kernel_size=(4, 8), padding='valid', input_shape=[4, window_size, 1])(inp_2)
/Users/admin/opt/anaconda3/envs/NG/lib/python3.5/site-packages/keras/engine/topology.py in __call__(self, inputs, **kwargs)
581
582 # Handle mask propagation.
--> 583 previous_mask = _collect_previous_mask(inputs)
584 user_kwargs = copy.copy(kwargs)
585 if not _is_all_none(previous_mask):
/Users/admin/opt/anaconda3/envs/NG/lib/python3.5/site-packages/keras/engine/topology.py in _collect_previous_mask(input_tensors)
2750 inbound_layer, node_index, tensor_index = x._keras_history
2751 node = inbound_layer.inbound_nodes[node_index]
-> 2752 mask = node.output_masks[tensor_index]
2753 masks.append(mask)
2754 else:
IndexError: list index out of range
为什么会出现此错误?如果可以,如何解决?多谢各位
顺便说一句,我的Python环境
# packages in environment at /Users/admin/opt/anaconda3/envs/NG:
#
# Name Version Build Channel
appnope 0.1.0 py35hd172556_0 defaults
biopython 1.72 pypi_0 pypi
blas 1.0 mkl defaults
ca-certificates 2021.1.19 hecd8cb5_1 defaults
certifi 2020.6.20 pyhd3eb1b0_3 defaults
cycler 0.10.0 pypi_0 pypi
dbus 1.13.18 h18a8e69_0 defaults
decorator 4.4.2 pyhd3eb1b0_0 defaults
expat 2.3.0 h23ab428_2 defaults
freetype 2.5.5 2 defaults
gettext 0.19.8.1 hb0f4f8b_2 defaults
glib 2.68.0 hdf23fa2_0 defaults
graphviz 2.38.0 4 defaults
h5py 2.8.0 py35h878fce3_3 defaults
hdf5 1.10.2 hfa1e0ec_1 defaults
icu 58.2 h0a44026_3 defaults
imageio 2.9.0 pypi_0 pypi
intel-openmp 2019.4 233 defaults
ipykernel 4.9.0 py35_1 defaults
ipython 6.0.0 py35_0 defaults
ipython_genutils 0.2.0 pyhd3eb1b0_1 defaults
ipywidgets 4.1.1 py35_0 defaults
jinja2 2.11.3 pyhd3eb1b0_0 defaults
joblib 0.14.1 pypi_0 pypi
jpeg 9b he5867d9_2 defaults
jsonschema 2.6.0 py35h2dd9e4b_0 defaults
jupyter 1.0.0 py35_7 defaults
jupyter_client 5.1.0 py35_0 defaults
jupyter_console 5.2.0 py35_0 defaults
jupyter_core 4.5.0 py_0 defaults
keras 2.0.6 py35_0 conda-forge
keras-vis 0.4.1 pypi_0 pypi
kiwisolver 1.1.0 pypi_0 pypi
libcxx 10.0.0 1 defaults
libedit 3.1.20191231 h1de35cc_1 defaults
libffi 3.3 hb1e8313_2 defaults
libgfortran 3.0.1 h93005f0_2 defaults
libiconv 1.16 h1de35cc_0 defaults
libpng 1.6.37 ha441bb4_0 defaults
libprotobuf 3.6.0 hd9629dc_0 defaults
libtiff 4.0.6 5 conda-forge
markupsafe 1.0 py35_0 defaults
matplotlib 3.0.3 pypi_0 pypi
mistune 0.7.4 py35_0 defaults
mkl 2018.0.3 1 defaults
mock 2.0.0 py35hb42c812_0 defaults
nbconvert 4.1.0 py35_0 defaults
nbformat 5.1.3 pyhd3eb1b0_0 defaults
ncurses 6.2 h0a44026_1 defaults
networkx 2.4 pypi_0 pypi
notebook 5.0.0 py35_0 defaults
numpy 1.18.5 pypi_0 pypi
openssl 1.0.2u h1de35cc_0 defaults
pandas 0.22.0 pypi_0 pypi
pbr 5.5.1 py_0 defaults
pcre 8.44 hb1e8313_0 defaults
pexpect 4.8.0 pyhd3eb1b0_3 defaults
pickleshare 0.7.5 pyhd3eb1b0_1003 defaults
pillow 7.2.0 pypi_0 pypi
pip 9.0.1 py35_1 defaults
prompt_toolkit 1.0.15 py35_0 defaults
protobuf 3.6.0 py35h0a44026_0 defaults
ptyprocess 0.7.0 pyhd3eb1b0_2 defaults
pydot 1.4.2 pypi_0 pypi
pygments 2.8.1 pyhd3eb1b0_0 defaults
pyparsing 2.4.7 pyhd3eb1b0_0 defaults
pyqt 5.9.2 py35h655552a_2 defaults
python 3.5.0 1 defaults
python-dateutil 2.8.1 pyhd3eb1b0_0 defaults
python-graphviz 0.14.2 pypi_0 pypi
pytz 2021.1 pypi_0 pypi
pywavelets 1.1.1 pypi_0 pypi
pyyaml 3.12 py35hf8cec8a_1 defaults
pyzmq 16.0.2 py35_0 defaults
qt 5.9.7 h468cd18_1 defaults
qtconsole 4.3.1 py35_0 defaults
readline 6.2 2 defaults
scikit-image 0.15.0 pypi_0 pypi
scikit-learn 0.22.2.post1 pypi_0 pypi
scipy 1.1.0 py35hcaad992_0 defaults
setuptools 36.4.0 py35_1 defaults
simplegeneric 0.8.1 py35_2 defaults
sip 4.19.8 py35h0a44026_0 defaults
six 1.15.0 pyhd3eb1b0_0 defaults
sklearn 0.0 pypi_0 pypi
sqlite 3.33.0 hffcf06c_0 defaults
tensorflow 1.0.0 py35_0 conda-forge
terminado 0.6 py35_0 defaults
theano 1.0.5 pypi_0 pypi
tk 8.5.18 0 defaults
tornado 4.5.3 py35_0 defaults
traitlets 4.3.2 py35_0 defaults
wcwidth 0.2.5 py_0 defaults
wheel 0.36.2 pyhd3eb1b0_0 defaults
xz 5.0.5 1 defaults
yaml 0.2.5 haf1e3a3_0 defaults
zlib 1.2.11 h1de35cc_3 defaults
你使用TF1.0有什么原因吗?您的示例与TF 2.4完美配合。@lescure因为我将使用vis.visualization.visualization_显著性函数来计算输入数据的显著性映射,但是如果我使用更高版本的python/tensorflow/keras,它将无法工作(产生一些错误)。有什么解决办法吗?谢谢你的评论。^^如果使用TF1.0,可能必须避免使用Keras层。使用tf.placeholder(…)和tf.nn.conv2d。
# packages in environment at /Users/admin/opt/anaconda3/envs/NG:
#
# Name Version Build Channel
appnope 0.1.0 py35hd172556_0 defaults
biopython 1.72 pypi_0 pypi
blas 1.0 mkl defaults
ca-certificates 2021.1.19 hecd8cb5_1 defaults
certifi 2020.6.20 pyhd3eb1b0_3 defaults
cycler 0.10.0 pypi_0 pypi
dbus 1.13.18 h18a8e69_0 defaults
decorator 4.4.2 pyhd3eb1b0_0 defaults
expat 2.3.0 h23ab428_2 defaults
freetype 2.5.5 2 defaults
gettext 0.19.8.1 hb0f4f8b_2 defaults
glib 2.68.0 hdf23fa2_0 defaults
graphviz 2.38.0 4 defaults
h5py 2.8.0 py35h878fce3_3 defaults
hdf5 1.10.2 hfa1e0ec_1 defaults
icu 58.2 h0a44026_3 defaults
imageio 2.9.0 pypi_0 pypi
intel-openmp 2019.4 233 defaults
ipykernel 4.9.0 py35_1 defaults
ipython 6.0.0 py35_0 defaults
ipython_genutils 0.2.0 pyhd3eb1b0_1 defaults
ipywidgets 4.1.1 py35_0 defaults
jinja2 2.11.3 pyhd3eb1b0_0 defaults
joblib 0.14.1 pypi_0 pypi
jpeg 9b he5867d9_2 defaults
jsonschema 2.6.0 py35h2dd9e4b_0 defaults
jupyter 1.0.0 py35_7 defaults
jupyter_client 5.1.0 py35_0 defaults
jupyter_console 5.2.0 py35_0 defaults
jupyter_core 4.5.0 py_0 defaults
keras 2.0.6 py35_0 conda-forge
keras-vis 0.4.1 pypi_0 pypi
kiwisolver 1.1.0 pypi_0 pypi
libcxx 10.0.0 1 defaults
libedit 3.1.20191231 h1de35cc_1 defaults
libffi 3.3 hb1e8313_2 defaults
libgfortran 3.0.1 h93005f0_2 defaults
libiconv 1.16 h1de35cc_0 defaults
libpng 1.6.37 ha441bb4_0 defaults
libprotobuf 3.6.0 hd9629dc_0 defaults
libtiff 4.0.6 5 conda-forge
markupsafe 1.0 py35_0 defaults
matplotlib 3.0.3 pypi_0 pypi
mistune 0.7.4 py35_0 defaults
mkl 2018.0.3 1 defaults
mock 2.0.0 py35hb42c812_0 defaults
nbconvert 4.1.0 py35_0 defaults
nbformat 5.1.3 pyhd3eb1b0_0 defaults
ncurses 6.2 h0a44026_1 defaults
networkx 2.4 pypi_0 pypi
notebook 5.0.0 py35_0 defaults
numpy 1.18.5 pypi_0 pypi
openssl 1.0.2u h1de35cc_0 defaults
pandas 0.22.0 pypi_0 pypi
pbr 5.5.1 py_0 defaults
pcre 8.44 hb1e8313_0 defaults
pexpect 4.8.0 pyhd3eb1b0_3 defaults
pickleshare 0.7.5 pyhd3eb1b0_1003 defaults
pillow 7.2.0 pypi_0 pypi
pip 9.0.1 py35_1 defaults
prompt_toolkit 1.0.15 py35_0 defaults
protobuf 3.6.0 py35h0a44026_0 defaults
ptyprocess 0.7.0 pyhd3eb1b0_2 defaults
pydot 1.4.2 pypi_0 pypi
pygments 2.8.1 pyhd3eb1b0_0 defaults
pyparsing 2.4.7 pyhd3eb1b0_0 defaults
pyqt 5.9.2 py35h655552a_2 defaults
python 3.5.0 1 defaults
python-dateutil 2.8.1 pyhd3eb1b0_0 defaults
python-graphviz 0.14.2 pypi_0 pypi
pytz 2021.1 pypi_0 pypi
pywavelets 1.1.1 pypi_0 pypi
pyyaml 3.12 py35hf8cec8a_1 defaults
pyzmq 16.0.2 py35_0 defaults
qt 5.9.7 h468cd18_1 defaults
qtconsole 4.3.1 py35_0 defaults
readline 6.2 2 defaults
scikit-image 0.15.0 pypi_0 pypi
scikit-learn 0.22.2.post1 pypi_0 pypi
scipy 1.1.0 py35hcaad992_0 defaults
setuptools 36.4.0 py35_1 defaults
simplegeneric 0.8.1 py35_2 defaults
sip 4.19.8 py35h0a44026_0 defaults
six 1.15.0 pyhd3eb1b0_0 defaults
sklearn 0.0 pypi_0 pypi
sqlite 3.33.0 hffcf06c_0 defaults
tensorflow 1.0.0 py35_0 conda-forge
terminado 0.6 py35_0 defaults
theano 1.0.5 pypi_0 pypi
tk 8.5.18 0 defaults
tornado 4.5.3 py35_0 defaults
traitlets 4.3.2 py35_0 defaults
wcwidth 0.2.5 py_0 defaults
wheel 0.36.2 pyhd3eb1b0_0 defaults
xz 5.0.5 1 defaults
yaml 0.2.5 haf1e3a3_0 defaults
zlib 1.2.11 h1de35cc_3 defaults