在谷歌colab中在线运行jupyter笔记本时,没有出现任何错误, 但是在离线模式下运行代码时,它会给出以下错误。:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-30-04f071b889cd> in <module>
4 start_time = time.time()
5 x, min_val, info = fmin_l_bfgs_b(evaluator.loss, x.flatten(),
----> 6 fprime=evaluator.grads, maxfun=20)
7 print(min_val)
8 end_time = time.time()
~/anaconda3/lib/python3.7/site-packages/scipy/optimize/lbfgsb.py in fmin_l_bfgs_b(func, x0, fprime, args, approx_grad, bounds, m, factr, pgtol, epsilon, iprint, maxfun, maxiter, disp, callback, maxls)
197
198 res = _minimize_lbfgsb(fun, x0, args=args, jac=jac, bounds=bounds,
--> 199 **opts)
200 d = {'grad': res['jac'],
201 'task': res['message'],
~/anaconda3/lib/python3.7/site-packages/scipy/optimize/lbfgsb.py in _minimize_lbfgsb(fun, x0, args, jac, bounds, disp, maxcor, ftol, gtol, eps, maxfun, maxiter, iprint, callback, maxls, **unknown_options)
333 # until the completion of the current minimization iteration.
334 # Overwrite f and g:
--> 335 f, g = func_and_grad(x)
336 elif task_str.startswith(b'NEW_X'):
337 # new iteration
~/anaconda3/lib/python3.7/site-packages/scipy/optimize/lbfgsb.py in func_and_grad(x)
283 else:
284 def func_and_grad(x):
--> 285 f = fun(x, *args)
286 g = jac(x, *args)
287 return f, g
~/anaconda3/lib/python3.7/site-packages/scipy/optimize/optimize.py in function_wrapper(*wrapper_args)
324 def function_wrapper(*wrapper_args):
325 ncalls[0] += 1
--> 326 return function(*(wrapper_args + args))
327
328 return ncalls, function_wrapper
<ipython-input-27-551cb8cb7b3f> in loss(self, x)
6 def loss(self, x):
7 assert self.loss_value is None
----> 8 loss_value, grad_values = eval_loss_and_grads(x)
9 self.loss_value = loss_value
10 self.grad_values = grad_values
<ipython-input-26-8de948cd1256> in eval_loss_and_grads(x)
1 def eval_loss_and_grads(x):
2 x = x.reshape((1, height, width, 3))
----> 3 outs = f_outputs([x])
4 loss_value = outs[0]
5 grad_values = outs[1].flatten().astype('float64')
~/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/backend.py in __call__(self, inputs)
3287 feed_symbols != self._feed_symbols or self.fetches != self._fetches or
3288 session != self._session):
-> 3289 self._make_callable(feed_arrays, feed_symbols, symbol_vals, session)
3290
3291 fetched = self._callable_fn(*array_vals,
~/anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/backend.py in _make_callable(self, feed_arrays, feed_symbols, symbol_vals, session)
3213 # Handle fetches.
3214 for x in self.outputs + self.fetches:
-> 3215 callable_opts.fetch.append(x.name)
3216 # Handle updates.
3217 callable_opts.target.append(self.updates_op.name)
AttributeError: 'NoneType' object has no attribute 'name'
在离线模式下,分别使用以下版本的 tensoflow 和 keras:1.14.0、2.3.0
在谷歌colab中,分别是以下版本的tensoflow和keras:1.15.0,2.2.5
[注意:我检查了代码,当我在colab上运行它时,它正在工作。
代码是:
import time
for i in range(iterations):
print('Start of iteration', i)
start_time = time.time()
x, min_val, info = fmin_l_bfgs_b(evaluator.loss, x.flatten(),
fprime=evaluator.grads, maxfun=20)
print(min_val)
end_time = time.time()
print('Iteration %d completed in %ds' % (i, end_time - start_time))
尝试再次安装软件包,因为它解决了我的问题,就像我在 anaconda 环境中再次重新安装了一些冲突的软件包一样