python - TensorFlow Type Error 无效类型, 必须是字符串或张量
问题描述
我正在尝试建立一个简单的增强决策树并使用测试数据运行。我有类似的东西在另一台机器上工作,但是当移植代码时我得到这个错误:
TypeError: Fetch argument 0 has invalid type <class 'numpy.int64'>, must be a string or Tensor. (Can not convert a int64 into a Tensor or Operation.)
根据阅读,这个错误通常会导致重新分配一个关键变量,但我很难弄清楚它可能是什么。
这是我的代码(对不起,如果它有点乱,我尽可能地把它浓缩了)
import pandas as pd
import tensorflow as tf
tf.random.set_seed(123)
from sklearn.datasets import make_blobs
#creates an input function for a tf model
def make_input_fn(X, Y, n_epochs=None, shuffle=True):
batch_len = len(Y)
def input_fn():
dataset = tf.data.Dataset.from_tensor_slices((dict(X), Y))
if shuffle:
dataset = dataset.shuffle(batch_len)
# For training, cycle thru dataset as many times as need (n_epochs=None).
dataset = dataset.repeat(n_epochs)
#dividing data into batches
dataset = dataset.batch(batch_len)
return dataset
return input_fn
def fullTest():
print('_______Defining Test Data Blobs_______')
xVals, yVals = make_blobs(n_samples=10, centers=2, n_features=3, random_state=0)
#xVals
xVals = pd.DataFrame(xVals)
xVals.columns = ['feature {}'.format(num) for num in xVals.columns]
print('xVals:')
print(xVals)
#yVals
yVals = pd.DataFrame(yVals)
yVals.columns = ['flag']
print('yVals:')
print(yVals['flag'].value_counts())
# Defining input function
train_input_fn = make_input_fn(xVals, yVals)
trainX=xVals
trainY=yVals
#defining tf feature columns
feature_columns=[]
for feature_name in list(trainX.columns):
feature_columns.append(tf.feature_column.numeric_column(feature_name,dtype=tf.float32))
#creating the estimator
n_batches = 1
est = tf.estimator.BoostedTreesClassifier(feature_columns, n_batches_per_layer=n_batches)
est.train(train_input_fn, max_steps=250)
if __name__ == '__main__':
fullTest()
有很多错误打印输出。这是更相关的东西:
...\site-packages\tensorflow\python\framework\ops.py", line 3759, in _as_graph_element_locked
(type(obj).__name__, types_str))
TypeError: Can not convert a int64 into a Tensor or Operation.
During handling of the above exception, another exception occurred:
line 309, in __init__
(fetch, type(fetch), str(e)))
TypeError: Fetch argument 0 has invalid type <class 'numpy.int64'>, must be a string or Tensor. (Can not convert a int64 into a Tensor or Operation.)
完整追溯:
Traceback (most recent call last):
File "D:\Documents\Contracting\Yang\Ok2StandUp\Environments\ok2suGen\lib\site-packages\tensorflow\python\client\session.py", line 305, in __init__
fetch, allow_tensor=True, allow_operation=True))
File "D:\Documents\Contracting\Yang\Ok2StandUp\Environments\ok2suGen\lib\site-packages\tensorflow\python\framework\ops.py", line 3667, in as_graph_element
return self._as_graph_element_locked(obj, allow_tensor, allow_operation)
File "D:\Documents\Contracting\Yang\Ok2StandUp\Environments\ok2suGen\lib\site-packages\tensorflow\python\framework\ops.py", line 3759, in _as_graph_element_locked
(type(obj).__name__, types_str))
TypeError: Can not convert a int64 into a Tensor or Operation.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\Daniel Warfield\AppData\Local\Programs\Python\Python35\Lib\site-packages\Ok2StandLibrary\ok2stand_library\modeling\modeling_tools.py", line 127, in <module>
fullTest()
File "C:\Users\Daniel Warfield\AppData\Local\Programs\Python\Python35\Lib\site-packages\Ok2StandLibrary\ok2stand_library\modeling\modeling_tools.py", line 105, in fullTest
est.train(train_input_fn, max_steps=250)
File "D:\Documents\Contracting\Yang\Ok2StandUp\Environments\ok2suGen\lib\site-packages\tensorflow_estimator\python\estimator\estimator.py", line 349, in train
loss = self._train_model(input_fn, hooks, saving_listeners)
File "D:\Documents\Contracting\Yang\Ok2StandUp\Environments\ok2suGen\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 "D:\Documents\Contracting\Yang\Ok2StandUp\Environments\ok2suGen\lib\site-packages\tensorflow_estimator\python\estimator\estimator.py", line 1208, in _train_model_default
saving_listeners)
File "D:\Documents\Contracting\Yang\Ok2StandUp\Environments\ok2suGen\lib\site-packages\tensorflow_estimator\python\estimator\estimator.py", line 1507, in _train_with_estimator_spec
log_step_count_steps=log_step_count_steps) as mon_sess:
File "D:\Documents\Contracting\Yang\Ok2StandUp\Environments\ok2suGen\lib\site-packages\tensorflow\python\training\monitored_session.py", line 604, in MonitoredTrainingSession
stop_grace_period_secs=stop_grace_period_secs)
File "D:\Documents\Contracting\Yang\Ok2StandUp\Environments\ok2suGen\lib\site-packages\tensorflow\python\training\monitored_session.py", line 1038, in __init__
stop_grace_period_secs=stop_grace_period_secs)
File "D:\Documents\Contracting\Yang\Ok2StandUp\Environments\ok2suGen\lib\site-packages\tensorflow\python\training\monitored_session.py", line 749, in __init__
self._sess = _RecoverableSession(self._coordinated_creator)
File "D:\Documents\Contracting\Yang\Ok2StandUp\Environments\ok2suGen\lib\site-packages\tensorflow\python\training\monitored_session.py", line 1231, in __init__
_WrappedSession.__init__(self, self._create_session())
File "D:\Documents\Contracting\Yang\Ok2StandUp\Environments\ok2suGen\lib\site-packages\tensorflow\python\training\monitored_session.py", line 1236, in _create_session
return self._sess_creator.create_session()
File "D:\Documents\Contracting\Yang\Ok2StandUp\Environments\ok2suGen\lib\site-packages\tensorflow\python\training\monitored_session.py", line 909, in create_session
hook.after_create_session(self.tf_sess, self.coord)
File "D:\Documents\Contracting\Yang\Ok2StandUp\Environments\ok2suGen\lib\site-packages\tensorflow\python\training\basic_session_run_hooks.py", line 587, in after_create_session
self._save(session, global_step)
File "D:\Documents\Contracting\Yang\Ok2StandUp\Environments\ok2suGen\lib\site-packages\tensorflow\python\training\basic_session_run_hooks.py", line 620, in _save
write_meta_graph=self._save_graph_def)
File "D:\Documents\Contracting\Yang\Ok2StandUp\Environments\ok2suGen\lib\site-packages\tensorflow\python\training\saver.py", line 1158, in save
global_step = training_util.global_step(sess, global_step)
File "D:\Documents\Contracting\Yang\Ok2StandUp\Environments\ok2suGen\lib\site-packages\tensorflow\python\training\training_util.py", line 68, in global_step
return int(sess.run(global_step_tensor))
File "D:\Documents\Contracting\Yang\Ok2StandUp\Environments\ok2suGen\lib\site-packages\tensorflow\python\client\session.py", line 958, in run
run_metadata_ptr)
File "D:\Documents\Contracting\Yang\Ok2StandUp\Environments\ok2suGen\lib\site-packages\tensorflow\python\client\session.py", line 1166, in _run
self._graph, fetches, feed_dict_tensor, feed_handles=feed_handles)
File "D:\Documents\Contracting\Yang\Ok2StandUp\Environments\ok2suGen\lib\site-packages\tensorflow\python\client\session.py", line 477, in __init__
self._fetch_mapper = _FetchMapper.for_fetch(fetches)
File "D:\Documents\Contracting\Yang\Ok2StandUp\Environments\ok2suGen\lib\site-packages\tensorflow\python\client\session.py", line 276, in for_fetch
return _ElementFetchMapper(fetches, contraction_fn)
File "D:\Documents\Contracting\Yang\Ok2StandUp\Environments\ok2suGen\lib\site-packages\tensorflow\python\client\session.py", line 309, in __init__
(fetch, type(fetch), str(e)))
TypeError: Fetch argument 0 has invalid type <class 'numpy.int64'>, must be a string or Tensor. (Can not convert a int64 into a Tensor or Operation.)
版本信息(GPU 加速也不起作用,但只要这不是问题的根源,就不用担心):
2020-08-31 20:29:14.209013: W tensorflow/stream_executor/platform/default/dso_loader.cc:59] Could not load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll not found
2020-08-31 20:29:14.209649: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
Python Version: 3.5.6 |Anaconda, Inc.| (default, Aug 26 2018, 16:05:27) [MSC v.1900 64 bit (AMD64)]
tf version: 2.3.0
解决方案
推荐阅读
- ios - 我可以使用 Siri Shortcut 更改变量的值吗?
- javascript - 为什么我的 add like 方法返回“无法读取未定义的属性”?
- swift - 如何从另一个类更改一个类中声明的变量值?
- java - 有没有办法将格式化的 BigDecimal 数字分配给 BigDecimal?
- c# - 单词。不带对话框窗口另存为 PDF
- angularjs - 单一水疗中心的替代品
- java - 如何在 swt 组合框中显示最大数据数?
- jenkins - 显示上次成功构建 (#79),1 天 21 小时前和上次构建 - Jenkins 电子邮件中的持续时间
- php - 未安装/加载/启用 PHP 扩展,使用官方 PHP docker 镜像
- javascript - 如何保护可能从浏览器源代码中窃取的 Angular js 应用程序代码?