티스토리 뷰
AI/debugging & trouble shooting
ValueError: The first argument to `Layer.call` must always be passed. 에러 해결 정리
5_Clock 2021. 6. 25. 21:41반응형
ValueError: The first argument to `Layer.call` must always be passed.
해당 에러는 여러가지 경우에 일어나는데 해결을 할때마다 업로드 할 예정입니다.
근본 원인
기본적으로 tensorflow에서 layer의 틀은
class my_layer(keras.layers.Layer):
def __init__(self):
'''
blah blah
'''
def call(self):
'''
blah blah
'''
위와 같은 형식으로 구성이 됩니다.
그 중 call의 함수를 잘못 호출 했을때(?) 주로 일어나는 에러입니다.
Situation
원인 1
변수안에 함수를 잘못된 형식으로 넣어주었다.
...
base_model = resnet_v2.ResNet101V2()
...
logits, end_points = base_model(input_shape=inputs,
classes=None,
weights='imagenet')
...
해당 소스코드를 실행하게 되면
Traceback (most recent call last):
File "train.py", line 288, in <module>
tf.app.run(main=main, argv=[sys.argv[0]] + unparsed)
File "C:\Users\ohsh0\anaconda3\envs\deeplab\lib\site-packages\tensorflow\python\platform\app.py", line 40, in run
_run(main=main, argv=argv, flags_parser=_parse_flags_tolerate_undef)
File "C:\Users\ohsh0\anaconda3\envs\deeplab\lib\site-packages\absl\app.py", line 303, in run
_run_main(main, args)
File "C:\Users\ohsh0\anaconda3\envs\deeplab\lib\site-packages\absl\app.py", line 251, in _run_main
sys.exit(main(argv))
File "train.py", line 270, in main
hooks=train_hooks,
File "C:\Users\ohsh0\anaconda3\envs\deeplab\lib\site-packages\tensorflow_estimator\python\estimator\estimator.py", line 349, in train
loss = self._train_model(input_fn, hooks, saving_listeners)
File "C:\Users\ohsh0\anaconda3\envs\deeplab\lib\site-packages\tensorflow_estimator\python\estimator\estimator.py", line 1175, in _train_model
return self._train_model_default(input_fn, hooks, saving_listeners)
File "C:\Users\ohsh0\anaconda3\envs\deeplab\lib\site-packages\tensorflow_estimator\python\estimator\estimator.py", line 1204, in _train_model_default
self.config)
File "C:\Users\ohsh0\anaconda3\envs\deeplab\lib\site-packages\tensorflow_estimator\python\estimator\estimator.py", line 1163, in _call_model_fn
model_fn_results = self._model_fn(features=features, **kwargs)
File "C:\Users\ohsh0\seg_ex\deeplab_v3\deeplab_model.py", line 182, in deeplabv3_plus_model_fn
logits = network(features, mode == tf.estimator.ModeKeys.TRAIN)
File "C:\Users\ohsh0\seg_ex\deeplab_v3\deeplab_model.py", line 130, in model
weights='imagenet')
File "C:\Users\ohsh0\anaconda3\envs\deeplab\lib\site-packages\tensorflow\python\keras\engine\base_layer_v1.py", line 680, in __call__
'The first argument to `Layer.call` must always be passed.')
ValueError: The first argument to `Layer.call` must always be passed.
다음과 같은 에러가 나오는 것을 볼 수 있다.
해결 1
...
base_model = resnet_v2.ResNet101V2
# base_model에 변수를 넣어줄때 뒤에 ()괄호를 없애주면 해결 된다.
...
logits, end_points = base_model(input_shape=inputs,
classes=None,
weights='imagenet')
...
728x90
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- JPA
- Container
- KAFKA
- Data Engineering
- 프론트엔드
- feign client
- React
- logback
- K8S
- Linux
- zookeeper
- Firebase
- Java
- frontend
- OS
- centos
- rhel
- consumer
- docker
- spring
- Producer
- NextJS
- spring boot
- cs
- 리액트
- API
- broker
- Front
- apache kafka
- apache
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함
250x250