Tôi đang cố gắng vừa với mô hình TensorForestEstimator
với dữ liệu dấu phẩy động dạng số đại diện cho 7 đối tượng địa lý và 7 nhãn. Tức là, hình dạng của cả hai features
và labels
là (484876, 7)
. Tôi đặt num_classes=7
và num_features=7
trong ForestHParams
một cách thích hợp. Định dạng của dữ liệu như sau:TensorFlow gặp sự cố khi lắp TensorForestEstimator
f1 f2 f3 f4 f5 f6 f7 l1 l2 l3 l4 l5 l6 l7
39000.0 120.0 65.0 1000.0 25.0 0.69 3.94 39000.0 39959.0 42099.0 46153.0 49969.0 54127.0 55911.0
32000.0 185.0 65.0 1000.0 75.0 0.46 2.19 32000.0 37813.0 43074.0 48528.0 54273.0 60885.0 63810.0
30000.0 185.0 65.0 1000.0 25.0 0.41 1.80 30000.0 32481.0 35409.0 39145.0 42750.0 46678.0 48595.0
Khi gọi fit()
Python treo với thông báo sau:
Python bỏ bất ngờ khi sử dụng _pywrap_tensorflow_internal.so plug-in.
Đây là kết quả khi cho phép tf.logging.set_verbosity('INFO')
:
INFO:tensorflow:training graph for tree: 0
INFO:tensorflow:training graph for tree: 1
...
INFO:tensorflow:training graph for tree: 9998
INFO:tensorflow:training graph for tree: 9999
INFO:tensorflow:Create CheckpointSaverHook.
2017-07-26 10:25:30.908894: F tensorflow/contrib/tensor_forest/kernels/count_extremely_random_stats_op.cc:404]
Check failed: column < num_classes_ (39001 vs. 8)
Process finished with exit code 134 (interrupted by signal 6: SIGABRT)
Tôi không chắc chắn những gì lỗi này có nghĩa là, nó không thực sự có ý nghĩa kể từ num_classes=7
, không 8 và như hình dạng các tính năng và nhãn là (484876, 7)
, tôi không biết 39001 đến từ đâu.
Đây là đoạn mã để tái sản xuất:
import numpy as np
import pandas as pd
import os
def get_training_data():
training_file = "data.txt"
data = pd.read_csv(training_file, sep='\t')
X = np.array(data.drop('Result', axis=1), dtype=np.float32)
y = []
for e in data.ResultStr:
y.append(list(np.array(str(e).replace('[', '').replace(']', '').split(','))))
y = np.array(y, dtype=np.float32)
features = tf.constant(X)
labels = tf.constant(y)
return features, labels
hyperparameters = ForestHParams(
num_trees=100,
max_nodes=10000,
bagging_fraction=1.0,
num_splits_to_consider=0,
feature_bagging_fraction=1.0,
max_fertile_nodes=0,
split_after_samples=250,
min_split_samples=5,
valid_leaf_threshold=1,
dominate_method='bootstrap',
dominate_fraction=0.99,
# All parameters above are default
num_classes=7,
num_features=7
)
estimator = TensorForestEstimator(
params=hyperparameters,
# All parameters below are default
device_assigner=None,
model_dir=None,
graph_builder_class=RandomForestGraphs,
config=None,
weights_name=None,
keys_name=None,
feature_engineering_fn=None,
early_stopping_rounds=100,
num_trainers=1,
trainer_id=0,
report_feature_importances=False,
local_eval=False
)
estimator.fit(
input_fn=lambda: get_training_data(),
max_steps=100,
monitors=[
TensorForestLossHook(
early_stopping_rounds=30
)
]
)
Nó cũng không làm việc nếu tôi quấn nó với SKCompat
, các lỗi tương tự xảy ra. Nguyên nhân của vụ tai nạn này là gì?
Bạn có thể cung cấp dữ liệu đầu vào mẫu không? – denfromufa
Tôi đã chỉnh sửa câu hỏi để cung cấp dữ liệu đầu vào. – jshapy8