• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

TypeError: in user code: TypeError: Can not convert a NoneType into a Tensor or Operation.

21.07.04 01:12 작성 조회수 608

0

- cartpole_reinforce.ipynb를 pycharm에서 .py로 변경해서 예제코드를 돌리고 있는 중에 위와 같은 에러가 발생했습니다.
- tensorflow_gpu는 2.3.0이고, python version은 3.7.10 입니다.
- 아, keras-applications는 10.0.8, keras-preprocessing은 1.1.2 입니다.
에러가 keras version 하고 관계있나요?
에러는 다음과 같습니다.
Traceback (most recent call last):
  File "C:/WorkSpace/RL/kimnam/rl-main/rl-main/codes/cartpole_reinforce.py", line 163, in <module>
    agent.train()
  File "C:/WorkSpace/RL/kimnam/rl-main/rl-main/codes/cartpole_reinforce.py", line 80, in train
    self.train_mini_batch()
  File "C:/WorkSpace/RL/kimnam/rl-main/rl-main/codes/cartpole_reinforce.py", line 148, in train_mini_batch
    self.model.fit(x=[states_t, action_matrixs_t, discount_rewards_t], y=[action_probs_t], epochs=self.epochs_cnt, verbose=0)
  File "C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\keras\engine\training.py", line 108, in _method_wrapper
    return method(self, *args, **kwargs)
  File "C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\keras\engine\training.py", line 1098, in fit
    tmp_logs = train_function(iterator)
  File "C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\eager\def_function.py", line 780, in __call__
    result = self._call(*args, **kwds)
  File "C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\eager\def_function.py", line 823, in _call
    self._initialize(args, kwds, add_initializers_to=initializers)
  File "C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\eager\def_function.py", line 697, in _initialize
    *args, **kwds))
  File "C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\eager\function.py", line 2855, in _get_concrete_function_internal_garbage_collected
    graph_function, _, _ = self._maybe_define_function(args, kwargs)
  File "C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\eager\function.py", line 3213, in _maybe_define_function
    graph_function = self._create_graph_function(args, kwargs)
  File "C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\eager\function.py", line 3075, in _create_graph_function
    capture_by_value=self._capture_by_value),
  File "C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\framework\func_graph.py", line 986, in func_graph_from_py_func
    func_outputs = python_func(*func_args, **func_kwargs)
  File "C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\eager\def_function.py", line 600, in wrapped_fn
    return weak_wrapped_fn().__wrapped__(*args, **kwds)
  File "C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\framework\func_graph.py", line 973, in wrapper
    raise e.ag_error_metadata.to_exception(e)
TypeError: in user code:

    C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\keras\engine\training.py:806 train_function  *
        return step_function(self, iterator)
    C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\keras\engine\training.py:796 step_function  **
        outputs = model.distribute_strategy.run(run_step, args=(data,))
    C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:1211 run
        return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)
    C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:2585 call_for_each_replica
        return self._call_for_each_replica(fn, args, kwargs)
    C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:2945 _call_for_each_replica
        return fn(*args, **kwargs)
    C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\keras\engine\training.py:791 run_step  **
        with ops.control_dependencies(_minimum_control_deps(outputs)):
    C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\framework\ops.py:5359 control_dependencies
        return get_default_graph().control_dependencies(control_inputs)
    C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\framework\func_graph.py:360 control_dependencies
        return super(FuncGraph, self).control_dependencies(filtered_control_inputs)
    C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\framework\ops.py:4749 control_dependencies
        c = self.as_graph_element(c)
    C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\framework\ops.py:3670 as_graph_element
        return self._as_graph_element_locked(obj, allow_tensor, allow_operation)
    C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\framework\ops.py:3759 _as_graph_element_locked
        (type(obj).__name__, types_str))

    TypeError: Can not convert a NoneType into a Tensor or Operation.

뭐가 잘 못 되었을 까요?

답변 5

·

답변을 작성해보세요.

0

안녕하세요 이석헌님.

지금 상황이 글로 답변드려서 해결되기가 쉽지 않을 것 같습니다. 제 이메일로 연락처와 연락 가능한 시간 알려주시면 연락드릴께요.

multicore7419@gmail.com 

감사합니다.

0

이석헌님의 프로필

이석헌

질문자

2021.07.06

성의있는 답변 고맙습니다. 되도록 혼자 해결하려고 노력하는데 안되는 군요. 

선생님의 말씀대로 시도했으나  다음과 같은 결과가 나왔습니다.

물론 anaconda3를 삭제했고, pip 이나 conda를 이용해서 tensorflow를 모두 삭제하고

python 3.7.7

tensorflow 2.2.0(cpu)

numpy 1.19.3을 새로 깔았습니다.

이전에 깐 tensorflow를 전부 삭제 한다고 했는데 덜 삭제 되었나 싶기도 하고 ...

매번 죄송합니다.

import tensorflow as tf
import matplotlib
import gym
import numpy as np
print(tf.__version__)

ImportError                               Traceback (most recent call last)
c:\python377\lib\site-packages\tensorflow\python\pywrap_tensorflow.py in <module>
     57 
---> 58   from tensorflow.python.pywrap_tensorflow_internal import *
     59 

c:\python377\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py in <module>
     27             return _mod
---> 28     _pywrap_tensorflow_internal = swig_import_helper()
     29     del swig_import_helper

c:\python377\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py in swig_import_helper()
     23             try:
---> 24                 _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
     25             finally:

c:\python377\lib\imp.py in load_module(name, file, filename, details)
    241         else:
--> 242             return load_dynamic(name, filename, file)
    243     elif type_ == PKG_DIRECTORY:

c:\python377\lib\imp.py in load_dynamic(name, path, file)
    341             name=name, loader=loader, origin=path)
--> 342         return _load(spec)
    343 

ImportError: DLL load failed: DLL 초기화 루틴을 실행할 수 없습니다.

During handling of the above exception, another exception occurred:

ImportError                               Traceback (most recent call last)
C:\Users\ADMINI~1\AppData\Local\Temp/ipykernel_9004/353091140.py in <module>
----> 1 import tensorflow as tf
      2 import matplotlib
      3 import gym
      4 import numpy as np
      5 print(tf.__version__)

c:\python377\lib\site-packages\tensorflow\__init__.py in <module>
     39 import sys as _sys
     40 
---> 41 from tensorflow.python.tools import module_util as _module_util
     42 from tensorflow.python.util.lazy_loader import LazyLoader as _LazyLoader
     43 

c:\python377\lib\site-packages\tensorflow\python\__init__.py in <module>
     48 import numpy as np
     49 
---> 50 from tensorflow.python import pywrap_tensorflow
     51 
     52 # Protocol buffers

c:\python377\lib\site-packages\tensorflow\python\pywrap_tensorflow.py in <module>
     67 for some common reasons and solutions.  Include the entire stack trace
     68 above this error message when asking for help.""" % traceback.format_exc()
---> 69   raise ImportError(msg)
     70 
     71 # pylint: enable=wildcard-import,g-import-not-at-top,unused-import,line-too-long

ImportError: Traceback (most recent call last):
  File "c:\python377\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "c:\python377\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in <module>
    _pywrap_tensorflow_internal = swig_import_helper()
  File "c:\python377\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 24, in swig_import_helper
    _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
  File "c:\python377\lib\imp.py", line 242, in load_module
    return load_dynamic(name, filename, file)
  File "c:\python377\lib\imp.py", line 342, in load_dynamic
    return _load(spec)
ImportError: DLL load failed: DLL 초기화 루틴을 실행할 수 없습니다.


Failed to load the native TensorFlow runtime.

See https://www.tensorflow.org/install/errors

for some common reasons and solutions.  Include the entire stack trace
above this error message when asking for help.

​

0

안녕하세요 이석헌님.

지금 아나콘다 환경을 사용하고 계신것 같습니다.

아나콘다가 많은 장점을 제공하고 있지만, 본 강의와 몇몇 소프트웨어 버전이 안 맞는 것 같습니다. 우선 정상적인 테스트를 위해 아니콘다를 사용하지 마시고, 본 강의에 있는 그대로 파이썬부터 하나씩 설치해서 환경을 가이드와 동일하게 구성해 보시는 것을 추천드립니다. 

cannot import name 'tzlocal' from 'dateutil.tz' 에러 메시지 또한 아나콘다에서 제공하는 주피터 노트북에서 사용하는 패키지와 현재 설치한 파이썬이 가지고 있는 패키지의 버전이 맞지 않아 생기는 문제입니다.

본 강의에서 제공되는 코드는 gpu가 제공되지 않아도 실습하는데 큰 무리가 없습니다. 저도 i7 CPU만 가지고 모든 테스트를 완료했습니다. 번거로우시더라도 gpu 버전이 아닌 tensorflow 2.2를 설치해서 강의를 진행해 보시는것이 좋을 것 같습니다.

이석헌님과 동일한 환경으로 제 PC를 구성하고 상호 커뮤니케이션을  통해 문제를 정확하게 해결할 수 있지만, 글로만 설명드릴 수 밖에 없는 상황을 이해해 주셨으면 합니다.

강의에서 제공되는 코드는 제가 3대의 각기 다른 컴퓨터에서 환경을 반복적으로 구성해 가면서 테스트한 코드입니다. 강의와 환경만 맞추신다면 테스트에 큰 무리가 없으실 겁니다.

이석현님께서 다양한 인공지능 코드를 테스트해 보실려고 자신만의 환경을 구성하셨으리라 생각합니다. 인공지능을 공부하시는 입장에서는 당연한 선택입니다. 하지만, 현재 강의를 듣는 상황에서 소프트웨어 버전 때문에 문제가 계속 발생한다면, 우선 강의에서 추천하는 동일한 환경을 구성하시어 강화학습 개념을 먼저 파악하시는게 좋을 듯 합니다.

실제 강화학습 알고리즘을 사용하는 시점에서는 직접 알고리즘을 손으로 구현하시는 분들도 많지만,  Stable BaseLine과 같은 미리 개발된 강화학습 패키지를 사용하는 경우도 많습니다. Stable Baseline의 경우 tensorflow 1.x 버전을 사용하기 때문에 또 다른 환경을 구성해야합니다. 

다시 한번 말씀드리자면 개념을 익히신 후 자신만의 환경을 다시 구성하시는게 좋을 것 같습니다.

이석현님 환경에 적합한 답변을 드리지 못한 점 죄송스럽게 생각합니다.

일단 제가 말씀드린데로 다시 시도해 보시고 문제가 있으면 글 남겨주시기 바랍니다.

감사합니다.

0

이석헌님의 프로필

이석헌

질문자

2021.07.04

어떻게 해야 하나요?

아! 참, 이런 환경이 되니까 jupyter notebook도 실행이 안되고 다음과 같은 error가 나더라구요.

(base) C:\Users\Administrator>jupyter notebook
Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\Scripts\jupyter-notebook-script.py", line 6, in <module>
    from notebook.notebookapp import main
  File "C:\ProgramData\Anaconda3\lib\site-packages\notebook\notebookapp.py", line 78, in <module>
    from .services.kernels.kernelmanager import MappingKernelManager, AsyncMappingKernelManager
  File "C:\ProgramData\Anaconda3\lib\site-packages\notebook\services\kernels\kernelmanager.py", line 18, in <module>
    from jupyter_client.session import Session
  File "C:\ProgramData\Anaconda3\lib\site-packages\jupyter_client\session.py", line 41, in <module>
    from jupyter_client.jsonutil import extract_dates, squash_dates, date_default
  File "C:\ProgramData\Anaconda3\lib\site-packages\jupyter_client\jsonutil.py", line 11, in <module>
    from dateutil.tz import tzlocal
ImportError: cannot import name 'tzlocal' from 'dateutil.tz' (C:\ProgramData\Anaconda3\lib\site-packages\dateutil\tz\__init__.py)

0

안녕하세요 이석헌님.

파이썬은 버전에 굉장히 민감한 소프트웨어입니다.

따라하시는 예제와 버전이 조금만 틀려도 실행이 정상적으로 안될 수 있습니다.

우선 강의에 사용한 버전과 동일하게 환경을 설정하신 후 다시 실행해 보시기 바랍니다.

python 3.7.7

tensorflow 2.2

numpy 1.19.3

위와 같이 환경을 구성한 다음에 많은 문제가 해결되었습니다.

환경 변경 후 계속 문제가 발생하시면 다시 문의 주세요.

감사합니다.

이석헌님의 프로필

이석헌

질문자

2021.07.04

성의있는 답변 고맙습니다.일요일 쉬시는데 미안합니다.

선생님이 일러 주신 것과 비슷한 버전,

python=3.7.7.

numpy =1.19.2를 다운로드 받았고

tensorflow-gpu=2.2.0은 window용은 없고  linux용만 있더군요(anaconda/packages/tensorflow).그래서 tensorflow-gpu는 2.3.0을 깔았습니다.

그 결과는 다음과 같습니다.

C:\ProgramData\Anaconda3\envs\leesh\python.exe C:/WorkSpace/RL/kimnam/rl-main/rl-main/codes/cartpole_reinforce.py
Error processing line 1 of C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\matplotlib-3.4.2-py3.7-nspkg.pth:

  Traceback (most recent call last):
    File "C:\ProgramData\Anaconda3\envs\leesh\lib\site.py", line 168, in addpackage
      exec(line)
    File "<string>", line 1, in <module>
    File "<frozen importlib._bootstrap>", line 580, in module_from_spec
  AttributeError: 'NoneType' object has no attribute 'loader'

Remainder of file ignored
Model: "my_model"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_states (InputLayer)       [(None, 1, 4)]       0                                            
__________________________________________________________________________________________________
dense (Dense)                   (None, 1, 12)        60          input_states[0][0]               
__________________________________________________________________________________________________
input_action_matrixs (InputLaye [(None, 1, 2)]       0                                            
__________________________________________________________________________________________________
input_rewards (InputLayer)      [(None, 1, 1)]       0                                            
__________________________________________________________________________________________________
output (Dense)                  (None, 1, 2)         26          dense[0][0]                      
==================================================================================================
Total params: 86
Trainable params: 86
Non-trainable params: 0
__________________________________________________________________________________________________
Traceback (most recent call last):
  File "C:/WorkSpace/RL/kimnam/rl-main/rl-main/codes/cartpole_reinforce.py", line 163, in <module>
    agent.train()
  File "C:/WorkSpace/RL/kimnam/rl-main/rl-main/codes/cartpole_reinforce.py", line 80, in train
    self.train_mini_batch()
  File "C:/WorkSpace/RL/kimnam/rl-main/rl-main/codes/cartpole_reinforce.py", line 148, in train_mini_batch
    self.model.fit(x=[states_t, action_matrixs_t, discount_rewards_t], y=[action_probs_t], epochs=self.epochs_cnt, verbose=0)
  File "C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\keras\engine\training.py", line 108, in _method_wrapper
    return method(self, *args, **kwargs)
  File "C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\keras\engine\training.py", line 1098, in fit
    tmp_logs = train_function(iterator)
  File "C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\eager\def_function.py", line 780, in __call__
    result = self._call(*args, **kwds)
  File "C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\eager\def_function.py", line 823, in _call
    self._initialize(args, kwds, add_initializers_to=initializers)
  File "C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\eager\def_function.py", line 697, in _initialize
    *args, **kwds))
  File "C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\eager\function.py", line 2855, in _get_concrete_function_internal_garbage_collected
    graph_function, _, _ = self._maybe_define_function(args, kwargs)
  File "C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\eager\function.py", line 3213, in _maybe_define_function
    graph_function = self._create_graph_function(args, kwargs)
  File "C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\eager\function.py", line 3075, in _create_graph_function
    capture_by_value=self._capture_by_value),
  File "C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\framework\func_graph.py", line 986, in func_graph_from_py_func
    func_outputs = python_func(*func_args, **func_kwargs)
  File "C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\eager\def_function.py", line 600, in wrapped_fn
    return weak_wrapped_fn().__wrapped__(*args, **kwds)
  File "C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\framework\func_graph.py", line 973, in wrapper
    raise e.ag_error_metadata.to_exception(e)
TypeError: in user code:

    C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\keras\engine\training.py:806 train_function  *
        return step_function(self, iterator)
    C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\keras\engine\training.py:796 step_function  **
        outputs = model.distribute_strategy.run(run_step, args=(data,))
    C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:1211 run
        return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)
    C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:2585 call_for_each_replica
        return self._call_for_each_replica(fn, args, kwargs)
    C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:2945 _call_for_each_replica
        return fn(*args, **kwargs)
    C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\keras\engine\training.py:791 run_step  **
        with ops.control_dependencies(_minimum_control_deps(outputs)):
    C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\framework\ops.py:5359 control_dependencies
        return get_default_graph().control_dependencies(control_inputs)
    C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\framework\func_graph.py:360 control_dependencies
        return super(FuncGraph, self).control_dependencies(filtered_control_inputs)
    C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\framework\ops.py:4749 control_dependencies
        c = self.as_graph_element(c)
    C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\framework\ops.py:3670 as_graph_element
        return self._as_graph_element_locked(obj, allow_tensor, allow_operation)
    C:\ProgramData\Anaconda3\envs\leesh\lib\site-packages\tensorflow\python\framework\ops.py:3759 _as_graph_element_locked
        (type(obj).__name__, types_str))

    TypeError: Can not convert a NoneType into a Tensor or Operation.


Process finished with exit code 1