Python 3.x ValueError:功能与给定信息不兼容。给定特征:张量(“输入:0”,形状=(?,198),数据类型=浮点32)

Python 3.x ValueError:功能与给定信息不兼容。给定特征:张量(“输入:0”,形状=(?,198),数据类型=浮点32),python-3.x,machine-learning,tensorflow,gmm,Python 3.x,Machine Learning,Tensorflow,Gmm,嗨,我正在尝试使用tensorflow实现GMM。但我得到了以下错误:- ValueError:功能与给定信息不兼容。给定特征:张量(“输入:0”,形状=(?,198),dtype=float32),所需签名:张量签名(dtype=tf.float64,形状=张量形状([Dimension(None),Dimension(198)]),is_sparse=False) 以下是我的代码:- from tensorflow.contrib.factorization.python.ops impor

嗨,我正在尝试使用tensorflow实现GMM。但我得到了以下错误:- ValueError:功能与给定信息不兼容。给定特征:张量(“输入:0”,形状=(?,198),dtype=float32),所需签名:张量签名(dtype=tf.float64,形状=张量形状([Dimension(None),Dimension(198)]),is_sparse=False)

以下是我的代码:-

from tensorflow.contrib.factorization.python.ops import gmm as gmm_lib
import numpy as np
num_clusters = 200
x = np.array([[random.random() for i in range(198)] for j in range(2384)])
gmm = gmm_lib.GMM(num_clusters, batch_size=1)
gmm.fit(x.astype('float32'),steps=300)
yy = gmm.predict(x,y=None)
x是形状的numpy数组(2384198)

堆栈跟踪:-

    Traceback (most recent call last):
  File "C:\Users\#####\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2881, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-36-2078a841d9ee>", line 1, in <module>
    gmm.fit(x.astype('float32'),steps=300)
  File "C:\Users\#####\Anaconda3\lib\site-packages\tensorflow\contrib\factorization\python\ops\gmm.py", line 133, in fit
    init_feed_fn=self._data_feeder.get_feed_dict_fn())
  File "C:\Users\#####\Anaconda3\lib\site-packages\tensorflow\contrib\factorization\python\ops\gmm.py", line 266, in _legacy_train_model
    estimator._check_inputs(features, labels)  # pylint: disable=protected-access
  File "C:\Users\#####\Anaconda3\lib\site-packages\tensorflow\contrib\learn\python\learn\estimators\estimator.py", line 731, in _check_inputs
    (str(features), str(self._features_info)))
ValueError: Features are incompatible with given information. Given features: Tensor("input:0", shape=(?, 198), dtype=float32), required signatures: TensorSignature(dtype=tf.float64, shape=TensorShape([Dimension(None), Dimension(198)]), is_sparse=False).
如果传递float64数据,则会出现以下错误:-

    WARNING:tensorflow:float64 is not supported by many models, consider casting to float32.
Traceback (most recent call last):
File "C:\Users\gidnri6\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2881, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-7-13c656388647>", line 1, in <module>
clusters_gmm = cluster_data(processed_data.values, num_clusters)
File "<ipython-input-6-c0e495bfbd0d>", line 4, in cluster_data
gmm.fit(x,steps=300)
File "C:\Users\gidnri6\Anaconda3\lib\site-packages\tensorflow\contrib\factorization\python\ops\gmm.py", line 133, in fit
init_feed_fn=self._data_feeder.get_feed_dict_fn())
File "C:\Users\gidnri6\Anaconda3\lib\site-packages\tensorflow\contrib\factorization\python\ops\gmm.py", line 274, in _legacy_train_model
train_ops = estimator._get_train_ops(features, labels)  # pylint: disable=protected-access
File "C:\Users\gidnri6\Anaconda3\lib\site-packages\tensorflow\contrib\factorization\python\ops\gmm.py", line 201, in _get_train_ops
self._params)
File "C:\Users\gidnri6\Anaconda3\lib\site-packages\tensorflow\contrib\factorization\python\ops\gmm_ops.py", line 496, in gmm
covariance_type, random_seed)
File "C:\Users\gidnri6\Anaconda3\lib\site-packages\tensorflow\contrib\factorization\python\ops\gmm_ops.py", line 146, in __init__
self._create_variables(data, initial_means)
File "C:\Users\gidnri6\Anaconda3\lib\site-packages\tensorflow\contrib\factorization\python\ops\gmm_ops.py", line 179, in _create_variables
cov = _covariance(first_shard, False) + self._min_var
File "C:\Users\gidnri6\Anaconda3\lib\site-packages\tensorflow\contrib\factorization\python\ops\gmm_ops.py", line 63, in _covariance
cov = math_ops.matmul(x, x, transpose_a=True) / (num_points - 1)
File "C:\Users\gidnri6\Anaconda3\lib\site-packages\tensorflow\python\ops\math_ops.py", line 883, in binary_op_wrapper
y = ops.convert_to_tensor(y, dtype=x.dtype.base_dtype, name="y")
File "C:\Users\gidnri6\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py", line 651, in convert_to_tensor
as_ref=False)
File "C:\Users\gidnri6\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py", line 716, in internal_convert_to_tensor
ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
File "C:\Users\gidnri6\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py", line 589, in _TensorTensorConversionFunction
% (dtype.name, t.dtype.name, str(t)))
ValueError: Tensor conversion requested dtype float64 for Tensor with dtype float32: 'Tensor("sub_1:0", shape=(), dtype=float32)'
<代码>警告:TooSoFrase:许多模型不支持FLUAT64,考虑将FLUAT32转换为FLUAT32。 回溯(最近一次呼叫最后一次): 文件“C:\Users\gidnri6\Anaconda3\lib\site packages\IPython\core\interactiveshell.py”,第2881行,运行代码 exec(代码对象、self.user\u全局、self.user\n) 文件“”,第1行,在 clusters\u gmm=cluster\u数据(已处理的\u data.values,num\u clusters) 集群_数据中第4行的文件“” gmm.配合(x,步数=300) 文件“C:\Users\gidnri6\Anaconda3\lib\site packages\tensorflow\contrib\factorization\python\ops\gmm.py”,第133行,在fit中 init\u feed\u fn=self.\u data\u feed.get\u feed\u dict\u fn()) 文件“C:\Users\gidnri6\Anaconda3\lib\site packages\tensorflow\contrib\factorization\python\ops\gmm.py”,第274行,在传统列车模型中 列车运行=估算器。\获取列车运行(功能、标签)\ pylint:disable=受保护的访问 文件“C:\Users\gidnri6\Anaconda3\lib\site packages\tensorflow\contrib\factorization\python\ops\gmm.py”,第201行,在get\u train\ops中 自身(参数) 文件“C:\Users\gidnri6\Anaconda3\lib\site packages\tensorflow\contrib\factorization\python\ops\gmm\u ops.py”,第496行,gmm格式 协方差(类型,随机种子) 文件“C:\Users\gidnri6\Anaconda3\lib\site packages\tensorflow\contrib\factorization\python\ops\gmm_ops.py”,第146行,在uu init中__ 自我。创建变量(数据、初始平均值) 文件“C:\Users\gidnri6\Anaconda3\lib\site packages\tensorflow\contrib\factorization\python\ops\gmm\u ops.py”,第179行,在创建变量中 cov=\u协方差(第一个切分,假)+self.\u min\u var 文件“C:\Users\gidnri6\Anaconda3\lib\site packages\tensorflow\contrib\factorization\python\ops\gmm_ops.py”,第63行,在协方差中 cov=数学运算matmul(x,x,转置a=True)/(点数-1) 文件“C:\Users\gidnri6\Anaconda3\lib\site packages\tensorflow\python\ops\math_ops.py”,第883行,二进制_op_包装 y=ops.convert_to_tensor(y,dtype=x.dtype.base_dtype,name=“y”) 文件“C:\Users\gidnri6\Anaconda3\lib\site packages\tensorflow\python\framework\ops.py”,第651行,在convert_to_tensor中 as_ref=False) 文件“C:\Users\gidnri6\Anaconda3\lib\site packages\tensorflow\python\framework\ops.py”,第716行,在内部\u convert\u to \u tensor中 ret=conversion\u func(值,dtype=dtype,name=name,as\u ref=as\u ref) 文件“C:\Users\gidnri6\Anaconda3\lib\site packages\tensorflow\python\framework\ops.py”,第589行,在_TensorTensorConversionFunction中 %(dtype.name,t.dtype.name,str(t))) ValueError:Tensor转换请求dtype float64作为dtype float32的Tensor:“Tensor(“sub_1:0”,shape=(),dtype=float32)”
错误消息说它需要一个双精度浮点(
float64
),而您给它一个单精度浮点(
float32
)。如果您在上面的代码中放入
float64
,很可能会起作用。@drpng我试图这样做,但我遇到了一个新错误:-ValueError:Tensor转换请求dtype float64作为dtype float32的张量:“Tensor(“sub_1:0”,shape=(),dtype=float32)”num_clusters是什么?什么是x?您的示例未指定。@Paul Tucker
num_clusters=200
,x是numpy bd形状数组(2384198)。x的各个值介于0和0之间1@PaulTucker我已经更新了代码。请调查一下
    WARNING:tensorflow:float64 is not supported by many models, consider casting to float32.
Traceback (most recent call last):
File "C:\Users\gidnri6\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2881, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-7-13c656388647>", line 1, in <module>
clusters_gmm = cluster_data(processed_data.values, num_clusters)
File "<ipython-input-6-c0e495bfbd0d>", line 4, in cluster_data
gmm.fit(x,steps=300)
File "C:\Users\gidnri6\Anaconda3\lib\site-packages\tensorflow\contrib\factorization\python\ops\gmm.py", line 133, in fit
init_feed_fn=self._data_feeder.get_feed_dict_fn())
File "C:\Users\gidnri6\Anaconda3\lib\site-packages\tensorflow\contrib\factorization\python\ops\gmm.py", line 274, in _legacy_train_model
train_ops = estimator._get_train_ops(features, labels)  # pylint: disable=protected-access
File "C:\Users\gidnri6\Anaconda3\lib\site-packages\tensorflow\contrib\factorization\python\ops\gmm.py", line 201, in _get_train_ops
self._params)
File "C:\Users\gidnri6\Anaconda3\lib\site-packages\tensorflow\contrib\factorization\python\ops\gmm_ops.py", line 496, in gmm
covariance_type, random_seed)
File "C:\Users\gidnri6\Anaconda3\lib\site-packages\tensorflow\contrib\factorization\python\ops\gmm_ops.py", line 146, in __init__
self._create_variables(data, initial_means)
File "C:\Users\gidnri6\Anaconda3\lib\site-packages\tensorflow\contrib\factorization\python\ops\gmm_ops.py", line 179, in _create_variables
cov = _covariance(first_shard, False) + self._min_var
File "C:\Users\gidnri6\Anaconda3\lib\site-packages\tensorflow\contrib\factorization\python\ops\gmm_ops.py", line 63, in _covariance
cov = math_ops.matmul(x, x, transpose_a=True) / (num_points - 1)
File "C:\Users\gidnri6\Anaconda3\lib\site-packages\tensorflow\python\ops\math_ops.py", line 883, in binary_op_wrapper
y = ops.convert_to_tensor(y, dtype=x.dtype.base_dtype, name="y")
File "C:\Users\gidnri6\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py", line 651, in convert_to_tensor
as_ref=False)
File "C:\Users\gidnri6\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py", line 716, in internal_convert_to_tensor
ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
File "C:\Users\gidnri6\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py", line 589, in _TensorTensorConversionFunction
% (dtype.name, t.dtype.name, str(t)))
ValueError: Tensor conversion requested dtype float64 for Tensor with dtype float32: 'Tensor("sub_1:0", shape=(), dtype=float32)'