quantylab / rltrader

파이썬과 케라스를 이용한 딥러닝/강화학습 주식투자 - 퀀트 투자, 알고리즘 트레이딩을 위한 최첨단 해법 입문 (개정판)

Home Page:https://contents.premium.naver.com/misoncorp/quantylab

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

1.15 버전 a3c+cnn실행오류 문제

kyle-109 opened this issue · comments

main.py와 data_manager.py를 수정하고 a3c+lstm은 잘돌아가는데, a3c+cnn은 에러가 납니다.
main.py는 argument추가, data_manager는 주가 보조지표를 추가하는 방식으로 했는데, 아래와 같은 에러가 뜹니다.
원래 이런 건지 궁금합니다.
제가 올린 이전 질문에 친절하게 답변해주셔서 감사합니다.

Traceback (most recent call last):
File "/home/kyle109/anaconda3/envs/rl64bit_tf1.15.2/lib/python3.6/site-packages/tensorflow_core/python/framework/ops.py", line 1607, in _create_c_op
c_op = c_api.TF_FinishOperation(op_desc)
tensorflow.python.framework.errors_impl.InvalidArgumentError: Negative dimension size caused by subtracting 2 from 1 for 'max_pooling2d_2/MaxPool' (op: 'MaxPool') with input shapes: [?,1,1,64].

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "main.py", line 172, in
'policy_network_path': policy_network_path})
File "/home/kyle109/지표추가버전 (cnn버전)/learners.py", line 533, in init
input_dim=self.num_features)
File "/home/kyle109/지표추가버전 (cnn버전)/networks.py", line 85, in get_shared_network
Input((1, num_steps, input_dim)))
File "/home/kyle109/지표추가버전 (cnn버전)/networks.py", line 230, in get_network_head
output = MaxPooling2D(pool_size=(1, 2))(output)
File "/home/kyle109/anaconda3/envs/rl64bit_tf1.15.2/lib/python3.6/site-packages/tensorflow_core/python/keras/engine/base_layer.py", line 854, in call
outputs = call_fn(cast_inputs, *args, **kwargs)
File "/home/kyle109/anaconda3/envs/rl64bit_tf1.15.2/lib/python3.6/site-packages/tensorflow_core/python/keras/layers/pooling.py", line 248, in call
data_format=conv_utils.convert_data_format(self.data_format, 4))
File "/home/kyle109/anaconda3/envs/rl64bit_tf1.15.2/lib/python3.6/site-packages/tensorflow_core/python/ops/nn_ops.py", line 3815, in max_pool
name=name)
File "/home/kyle109/anaconda3/envs/rl64bit_tf1.15.2/lib/python3.6/site-packages/tensorflow_core/python/ops/gen_nn_ops.py", line 5674, in max_pool
data_format=data_format, name=name)
File "/home/kyle109/anaconda3/envs/rl64bit_tf1.15.2/lib/python3.6/site-packages/tensorflow_core/python/framework/op_def_library.py", line 794, in _apply_op_helper
op_def=op_def)
File "/home/kyle109/anaconda3/envs/rl64bit_tf1.15.2/lib/python3.6/site-packages/tensorflow_core/python/util/deprecation.py", line 507, in new_func
return func(*args, **kwargs)
File "/home/kyle109/anaconda3/envs/rl64bit_tf1.15.2/lib/python3.6/site-packages/tensorflow_core/python/framework/ops.py", line 3357, in create_op
attrs, op_def, compute_device)
File "/home/kyle109/anaconda3/envs/rl64bit_tf1.15.2/lib/python3.6/site-packages/tensorflow_core/python/framework/ops.py", line 3426, in _create_op_internal
op_def=op_def)
File "/home/kyle109/anaconda3/envs/rl64bit_tf1.15.2/lib/python3.6/site-packages/tensorflow_core/python/framework/ops.py", line 1770, in init
control_input_ops)
File "/home/kyle109/anaconda3/envs/rl64bit_tf1.15.2/lib/python3.6/site-packages/tensorflow_core/python/framework/ops.py", line 1610, in _create_c_op
raise ValueError(str(e))
ValueError: Negative dimension size caused by subtracting 2 from 1 for 'max_pooling2d_2/MaxPool' (op: 'MaxPool') with input shapes: [?,1,1,64].

@kyle-109
데이터의 shape가 달라져서 CNN 클래스의 get_network_head 함수를 적절히 수정해야 할 것 같습니다.
kernel_size, pool_size, Conv2D의 출력 dimension 등을 수정해보면서 적정 값을 찾아야할 것 같습니다.