Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当我得到这个时该怎么办;NumPy数组到张量(不支持的对象类型浮点)。”;在这种特殊情况下?_Python_Tensorflow_Keras_Deep Learning_Neural Network - Fatal编程技术网

Python 当我得到这个时该怎么办;NumPy数组到张量(不支持的对象类型浮点)。”;在这种特殊情况下?

Python 当我得到这个时该怎么办;NumPy数组到张量(不支持的对象类型浮点)。”;在这种特殊情况下?,python,tensorflow,keras,deep-learning,neural-network,Python,Tensorflow,Keras,Deep Learning,Neural Network,我有些怀疑。我得到了一些分类和数字特征的数据。这里是数据 我正在使用的库包括: import pandas as pd import numpy as np import tensorflow as tf tf.__version__ 2.3.0 在确定了X数据和y数据(最后一列)之后,我对分类数据进行了编码 from sklearn.compose import ColumnTransformer from sklearn.preprocessing import OneH

我有些怀疑。我得到了一些分类和数字特征的数据。这里是数据

我正在使用的库包括:

 import pandas as pd 
 import numpy as np 
 import tensorflow as tf

 tf.__version__
 2.3.0
在确定了X数据和y数据(最后一列)之后,我对分类数据进行了编码

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
ct= ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [0,1,2])], remainder = 'passthrough')
X = np.array(ct.fit_transform(X))
我之所以使用这种编码类型,是因为第1列和第2列不是数字的(它们定义了“批处理”和“连续”或“亮”和“暗”)操作类型,第0列与特定底物(有机化合物)相关,一些是复杂的(分子量未知),而另一些是简单的(分子量已知)

从编码的结果来看,我得到了:

正如我们看到的,每个类别都有自己的代码,列的数量也增加了。现在我有15个专栏

然后,我继续分割数据

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 1)
在X_列和X_测试中,我只对原始数值数据进行了归一化处理

from sklearn.preprocessing import MinMaxScaler
scalar = MinMaxScaler()
X_train[:,11:]=scalar.fit_transform(X_train[:,11:])
X_test[:,11:]=scalar.transform(X_test[:,11:]) 
最后,我想用输入层、隐藏层和一个输出层构建ANN

ann = tf.keras.models.Sequential()
ann.add(tf.keras.layers.Dense(units=15, activation='relu'))
ann.add(tf.keras.layers.Dense(units=7, activation='relu'))
ann.add(tf.keras.layers.Dense(units=1))
在我定义了ANN的结构之后,我想进行训练

ann.compile(optimizer = 'adam', loss = 'mean_squared_error')
问题来了

ann.fit(X_train, y_train, batch_size = 32, epochs = 100) 
这是给我看的:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-47-0ccb0e29ce49> in <module>()
----> 1 ann.fit(X_train, y_train, batch_size = 100, epochs = 728) # propagacion in batchs

13 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/constant_op.py in 
convert_to_eager_tensor(value, ctx, dtype)
 96       dtype = dtypes.as_dtype(dtype).as_datatype_enum
 97   ctx.ensure_initialized()
---> 98   return ops.EagerTensor(value, ctx.device_name, dtype)
 99 
100 

ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type float).
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在()
---->1 ann.fit(X列,y列,批量大小=100,历代=728)#批量宣传
13帧
/中的usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/constant_op.py
转换为张量(值、ctx、数据类型)
96 dtype=dtypes.as\u dtype(dtype).as\u datatype\u enum
97 ctx.确保_已初始化()
--->98返回操作数(值,ctx.device\u名称,数据类型)
99
100
ValueError:无法将NumPy数组转换为张量(不支持的对象类型float)。

那么,我如何解决这个问题呢?

您可以通过执行
Numpy
转换来解决问题,如下所示,而
fit
方法

ann.fit(np.asarray(X_train,dtype=np.float32), np.asarray(y_train,dtype=np.float32), batch_size = 32, epochs = 100)  
或者按照@4.Pi.n在评论中的建议,您可以使用下面的代码将
dtype
更改为
float32

ann.fit(X_train.astype('float32'), y_train.astype('float32'), batch_size = 32, epochs = 100)

尝试将数组强制转换为
float32
ann.fit(X_train.astype('float32'),y_train.astype('float32'),batch_size=32,epochs=100)