Python ValueError:操作具有“无”渐变-未使用自定义
根据标题,我在尝试使用Keras进行一些图像分类训练时遇到了这个常见错误。与几乎所有其他示例不同,我不想定制任何东西,只是简单地使用bog标准keras功能! 比如,谁问了一个类似的问题,但似乎没有跟进 我以前在同一个项目中遇到过一个错误,但是在升级了cudnn和cudatoolkit(以及相关的NVidia后端)之后,我遇到了这个新错误 康达名单:Python ValueError:操作具有“无”渐变-未使用自定义,python,tensorflow,keras,Python,Tensorflow,Keras,根据标题,我在尝试使用Keras进行一些图像分类训练时遇到了这个常见错误。与几乎所有其他示例不同,我不想定制任何东西,只是简单地使用bog标准keras功能! 比如,谁问了一个类似的问题,但似乎没有跟进 我以前在同一个项目中遇到过一个错误,但是在升级了cudnn和cudatoolkit(以及相关的NVidia后端)之后,我遇到了这个新错误 康达名单: # packages in environment at /home/me/Programs/anaconda3/envs/hand-gestur
# packages in environment at /home/me/Programs/anaconda3/envs/hand-gesture:
#
# Name Version Build Channel
_libgcc_mutex 0.1 main
_tflow_select 2.1.0 gpu
absl-py 0.9.0 py37_0
alabaster 0.7.12 py37_0
argh 0.26.2 py37_0
asn1crypto 1.3.0 py37_0
astor 0.8.0 py37_0
astroid 2.3.3 py37_0
atomicwrites 1.3.0 py37_1
attrs 19.3.0 py_0
autopep8 1.4.4 py_0
babel 2.8.0 py_0
backcall 0.1.0 py37_0
blas 1.0 mkl
bleach 3.1.4 py_0
blinker 1.4 py37_0
bzip2 1.0.8 h7b6447c_0
c-ares 1.15.0 h7b6447c_1001
ca-certificates 2020.1.1 0
cachetools 3.1.1 py_0
cairo 1.14.12 h8948797_3
certifi 2020.4.5.1 py37_0
cffi 1.14.0 py37h2e261b9_0
chardet 3.0.4 py37_1003
click 7.1.1 py_0
cloudpickle 1.4.0 py_0
cryptography 2.8 py37h1ba5d50_0
cudatoolkit 10.1.243 h6bb024c_0
cudnn 7.6.5 cuda10.1_0
cupti 10.1.168 0
cycler 0.10.0 py37_0
dbus 1.13.12 h746ee38_0
decorator 4.4.2 py_0
defusedxml 0.6.0 py_0
diff-match-patch 20181111 py_0
docutils 0.16 py37_0
entrypoints 0.3 py37_0
expat 2.2.6 he6710b0_0
ffmpeg 4.0 hcdf2ecd_0
flake8 3.7.9 py37_0
fontconfig 2.13.0 h9420a91_0
freeglut 3.0.0 hf484d3e_5
freetype 2.9.1 h8a8886c_1
future 0.18.2 py37_0
gast 0.2.2 py37_0
glib 2.63.1 h5a9c865_0
gmp 6.1.2 h6c8ec71_1
google-auth 1.13.1 py_0
google-auth-oauthlib 0.4.1 py_2
google-pasta 0.2.0 py_0
graphite2 1.3.13 h23475e2_0
grpcio 1.27.2 py37hf8bcb03_0
gst-plugins-base 1.14.0 hbbd80ab_1
gstreamer 1.14.0 hb453b48_1
h5py 2.8.0 py37h3010b51_1003 conda-forge
harfbuzz 1.8.8 hffaf4a1_0
hdf5 1.10.2 hba1933b_1
icu 58.2 he6710b0_3
idna 2.9 py_1
imagesize 1.2.0 py_0
importlib_metadata 1.5.0 py37_0
intel-openmp 2020.0 166
intervaltree 3.0.2 py_0
ipykernel 5.1.4 py37h39e3cac_0
ipython 7.13.0 py37h5ca1d4c_0
ipython_genutils 0.2.0 py37_0
isort 4.3.21 py37_0
jasper 2.0.14 h07fcdf6_1
jedi 0.15.2 py37_0
jeepney 0.4.3 py_0
jinja2 2.11.2 py_0
jpeg 9b h024ee3a_2
jsonschema 3.2.0 py37_0
jupyter_client 6.1.3 py_0
jupyter_core 4.6.3 py37_0
keras 2.3.1 0
keras-applications 1.0.8 py_0
keras-base 2.3.1 py37_0
keras-gpu 2.3.1 0
keras-preprocessing 1.1.0 py_1
keyring 21.1.1 py37_2
kiwisolver 1.2.0 py37hfd86e86_0
lazy-object-proxy 1.4.3 py37h7b6447c_0
ld_impl_linux-64 2.33.1 h53a641e_7
libedit 3.1.20181209 hc058e9b_0
libffi 3.2.1 hd88cf55_4
libgcc-ng 9.1.0 hdf63c60_0
libgfortran-ng 7.3.0 hdf63c60_0
libglu 9.0.0 hf484d3e_1
libopencv 3.4.2 hb342d67_1
libopus 1.3.1 h7b6447c_0
libpng 1.6.37 hbc83047_0
libprotobuf 3.11.4 hd408876_0
libsodium 1.0.16 h1bed415_0
libspatialindex 1.9.3 he6710b0_0
libstdcxx-ng 9.1.0 hdf63c60_0
libtiff 4.1.0 h2733197_0
libuuid 1.0.3 h1bed415_2
libvpx 1.7.0 h439df22_0
libxcb 1.13 h1bed415_1
libxml2 2.9.9 hea5a465_1
markdown 3.1.1 py37_0
markupsafe 1.1.1 py37h7b6447c_0
matplotlib 3.1.3 py37_0
matplotlib-base 3.1.3 py37hef1b27d_0
mccabe 0.6.1 py37_1
mistune 0.8.4 py37h7b6447c_0
mkl 2020.0 166
mkl-service 2.3.0 py37he904b0f_0
mkl_fft 1.0.15 py37ha843d7b_0
mkl_random 1.1.0 py37hd6b4f25_0
nbconvert 5.6.1 py37_0
nbformat 5.0.4 py_0
ncurses 6.2 he6710b0_1
numpy 1.18.1 py37h4f9e942_0
numpy-base 1.18.1 py37hde5b4d6_1
numpydoc 0.9.2 py_0
oauthlib 3.1.0 py_0
olefile 0.46 py37_0
opencv 3.4.2 py37h6fd60c2_1
openssl 1.1.1g h7b6447c_0
opt_einsum 3.1.0 py_0
packaging 20.3 py_0
pandoc 2.2.3.2 0
pandocfilters 1.4.2 py37_1
parso 0.5.2 py_0
pathtools 0.1.2 py_1
pcre 8.43 he6710b0_0
pexpect 4.8.0 py37_0
pickleshare 0.7.5 py37_0
pillow 7.0.0 py37hb39fc2d_0
pip 20.0.2 py37_1
pixman 0.38.0 h7b6447c_0
pluggy 0.13.1 py37_0
prompt-toolkit 3.0.4 py_0
prompt_toolkit 3.0.4 0
protobuf 3.11.4 py37he6710b0_0
psutil 5.7.0 py37h7b6447c_0
ptyprocess 0.6.0 py37_0
py-opencv 3.4.2 py37hb342d67_1
pyasn1 0.4.8 py_0
pyasn1-modules 0.2.7 py_0
pycodestyle 2.5.0 py37_0
pycparser 2.20 py_0
pydocstyle 4.0.1 py_0
pyflakes 2.1.1 py37_0
pygments 2.6.1 py_0
pyjwt 1.7.1 py37_0
pylint 2.5.0 py37_0
pyopenssl 19.1.0 py37_0
pyparsing 2.4.7 py_0
pyqt 5.9.2 py37h05f1152_2
pyrsistent 0.16.0 py37h7b6447c_0
pysocks 1.7.1 py37_0
python 3.7.7 hcf32534_0_cpython
python-dateutil 2.8.1 py_0
python-jsonrpc-server 0.3.4 py_0
python-language-server 0.31.10 py37_0
pytz 2019.3 py_0
pyxdg 0.26 py_0
pyyaml 5.3.1 py37h7b6447c_0
pyzmq 18.1.1 py37he6710b0_0
qdarkstyle 2.8.1 py_0
qt 5.9.7 h5867ecd_1
qtawesome 0.7.0 py_0
qtconsole 4.7.3 py_0
qtpy 1.9.0 py_0
readline 8.0 h7b6447c_0
requests 2.23.0 py37_0
requests-oauthlib 1.3.0 py_0
rope 0.16.0 py_0
rsa 4.0 py_0
rtree 0.9.4 py37_1
scipy 1.4.1 py37h0b6359f_0
secretstorage 3.1.2 py37_0
setuptools 46.1.3 py37_0
sip 4.19.8 py37hf484d3e_0
six 1.14.0 py37_0
snowballstemmer 2.0.0 py_0
sortedcontainers 2.1.0 py37_0
sphinx 3.0.3 py_0
sphinxcontrib-applehelp 1.0.2 py_0
sphinxcontrib-devhelp 1.0.2 py_0
sphinxcontrib-htmlhelp 1.0.3 py_0
sphinxcontrib-jsmath 1.0.1 py_0
sphinxcontrib-qthelp 1.0.3 py_0
sphinxcontrib-serializinghtml 1.1.4 py_0
spyder 4.1.2 py37_0
spyder-kernels 1.9.0 py37_0
sqlite 3.31.1 h62c20be_1
tensorboard 2.1.0 py3_0
tensorflow 2.1.0 gpu_py37h7a4bb67_0
tensorflow-base 2.1.0 gpu_py37h6c5654b_0
tensorflow-estimator 2.1.0 pyhd54b08b_0
tensorflow-gpu 2.1.0 h0d30ee6_0
termcolor 1.1.0 py37_1
testpath 0.4.4 py_0
tk 8.6.8 hbc83047_0
toml 0.10.0 py37h28b3542_0
tornado 6.0.4 py37h7b6447c_1
traitlets 4.3.3 py37_0
ujson 1.35 py37h14c3975_0
urllib3 1.25.8 py37_0
watchdog 0.10.2 py37_0
wcwidth 0.1.9 py_0
webencodings 0.5.1 py37_1
werkzeug 1.0.1 py_0
wheel 0.34.2 py37_0
wrapt 1.12.1 py37h7b6447c_1
wurlitzer 2.0.0 py37_0
xz 5.2.5 h7b6447c_0
yaml 0.1.7 had09818_2
yapf 0.28.0 py_0
zeromq 4.3.1 he6710b0_3
zipp 3.1.0 py_0
zlib 1.2.11 h7b6447c_3
zstd 1.3.7 h0b5b093_0
代码
日志
允许我运行一个时代,但现在我
Epoch 1/1
16/16 [==============================] - 6s 370ms/step - loss: 4.0208 - accuracy: 0.0391 - val_loss: 7.3795 - val_accuracy: 0.0469
Out[3]: <keras.callbacks.callbacks.History at 0x7f817e63c2d0>
Epoch 1/1
16/16[===========================================================================-6s 370ms/步长-损耗:4.0208-精度:0.0391-val_损耗:7.3795-val_精度:0.0469
出[3]:
编辑2:
正如Matias指出的,我的代码只设置为运行1个历元。因此,删除
clear_session()
解决了我的问题。我认为问题在于您在训练模型之前清除了会话,这样做没有任何意义,因为清除会话会清除内存中的模型结构,因此TensorFlow端没有模型表示,使培训失败
因此,在这种情况下,不要使用
K.清除会话()。似乎不需要它。为什么在调用fit_generator之前要调用K.clear_session()。@MatiasValdenegro我试图修复我遇到的另一个问题(可能通过升级版本“自行解决”)。删除该行可以修复该错误,并且我可以运行一个历元。一旦结束,我现在收到另一条信息。更新的问题。我现在没有看到任何问题。新问题是什么?它只运行一个历元,然后停止,这不是预期的行为,因为我预计会有5个历元。你没有将历元设置为5,似乎历元设置为1,正如它所说的历元1/1
from keras import backend as K
K.clear_session()
import keras
keras.backend.clear_session()
model.fit_generator(train_it, steps_per_epoch=16, validation_data=valid_it, validation_steps=8)
Traceback (most recent call last):
File "<ipython-input-19-ba2ec4f0a2a8>", line 8, in <module>
model.fit_generator(train_it, steps_per_epoch=16, validation_data=valid_it, validation_steps=8)
File "/home/me/Programs/anaconda3/envs/hand-gesture/lib/python3.7/site-packages/keras/legacy/interfaces.py", line 91, in wrapper
return func(*args, **kwargs)
File "/home/me/Programs/anaconda3/envs/hand-gesture/lib/python3.7/site-packages/keras/engine/training.py", line 1732, in fit_generator
initial_epoch=initial_epoch)
File "/home/me/Programs/anaconda3/envs/hand-gesture/lib/python3.7/site-packages/keras/engine/training_generator.py", line 42, in fit_generator
model._make_train_function()
File "/home/me/Programs/anaconda3/envs/hand-gesture/lib/python3.7/site-packages/keras/engine/training.py", line 316, in _make_train_function
loss=self.total_loss)
File "/home/me/Programs/anaconda3/envs/hand-gesture/lib/python3.7/site-packages/keras/legacy/interfaces.py", line 91, in wrapper
return func(*args, **kwargs)
File "/home/me/Programs/anaconda3/envs/hand-gesture/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py", line 75, in symbolic_fn_wrapper
return func(*args, **kwargs)
File "/home/me/Programs/anaconda3/envs/hand-gesture/lib/python3.7/site-packages/keras/optimizers.py", line 598, in get_updates
grads = self.get_gradients(loss, params)
File "/home/me/Programs/anaconda3/envs/hand-gesture/lib/python3.7/site-packages/keras/optimizers.py", line 93, in get_gradients
raise ValueError('An operation has `None` for gradient. '
ValueError: An operation has `None` for gradient. Please make sure that all of your ops have a gradient defined (i.e. are differentiable). Common ops without gradient: K.argmax, K.round, K.eval.
from keras import backend as K
K.clear_session()
import keras
keras.backend.clear_session()
Epoch 1/1
16/16 [==============================] - 6s 370ms/step - loss: 4.0208 - accuracy: 0.0391 - val_loss: 7.3795 - val_accuracy: 0.0469
Out[3]: <keras.callbacks.callbacks.History at 0x7f817e63c2d0>