rltrader icon indicating copy to clipboard operation
rltrader copied to clipboard

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

Open kyle-109 opened this issue 3 years ago • 1 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 avatar Jun 14 '21 14:06 kyle-109

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

quantylab avatar Jun 27 '21 08:06 quantylab