当前位置: 首页 > 知识库问答 >
问题:

由于张量转换错误,无法适应我的ML模型

董光霁
2023-03-14

我已经对数据集进行了一些预处理,并尝试拟合我的ML模型,但它返回以下错误消息:“未能将NumPy数组转换为张量(不支持的对象类型tensorflow.python.framework.ops.Tensor)。”

原始数据集如下所示:

Size   Version    Count   TimeStamp    Amount   Label
319       1        31    2019-03-21     321       1
482       2        91    2014-09-28     912       2

标签列是我的Y,其余的列是特性(Xs)。在将数据输入ML模型之前,我对大小、计数和数量列进行了标准化。这是我的代码:

numeric_features = ['Size', 'Count', 'Amount']
train_df, test_df = train_test_split(df, test_size=0.3) # train-test split

# create normalizer based on train data
normalizer = preprocessing.Normalization()
normalizer.adapt(train_df[numeric_features].values)
# Apply normalizer
train_df[numeric_features] = normalizer(train_df[numeric_features].values)

train_X = train_df.iloc[:, :-1]
train_Y = pd.get_dummies(train_df.Label, prefix='Label')

# reshape X data
train_X = np.array(train_X)
train_X = np.reshape(train_X, (train_X.shape[0],1,train_X.shape[1]))
train_Y = np.array(train_Y)


# Create a model
model_cnn = keras.Sequential()
model_cnn.add(layers.Conv1D(64, 1, activation='relu'))
model_cnn.add(layers.GlobalMaxPooling1D())
model_cnn.add(layers.Dense(2, activation='softmax'))


model_cnn.compile(optimizer = tf.keras.optimizers.Adam(), 
                  loss=tf.keras.losses.categorical_crossentropy, 
                  metrics=['accuracy'])

# Train the model 
epochs = 25
batch_size = 16

# This line throws an error.
history = model_cnn.fit(train_X, train_Y, epochs=epochs, batch_size=batch_size)

我不知道是哪一部分导致了这个错误。我不知道是不是因为正常化。当我规范化数值列时,每个单元格都有以下类型的值:

共有1个答案

步博涉
2023-03-14

主要的问题是,您使用的是dataframe,因此您将拥有数组的数组,您可以解决一些调用的方的问题。在数据帧中调用_numpy(),但在某些情况下,这将为您提供一个由numpy数组组成的numpy数组,因此我建议调用np。asarray()而不是np。数组在准备的最后一步

 类似资料:
  • 我下面的代码产生了常规的tensorflow模型,但当我试图将其转换为tensorflow lite时,它不起作用,我遵循了以下文档。 https://www.tensorflow.org/tutorials/estimator/linear1 https://www.tensorflow.org/lite/guide/get_started 错误信息 文档摘录 TensorFlow Lite转换

  • 我刚刚创建了一个新的模板与与reactv17包括,我安装了eslint依赖,因为我以前,这是我的package.json文件 这是我的eslintrc.json:(注意我还没有添加所有的规则) 当我运行应用程序时,由于以下错误,应用程序将无法编译: 我在以前的项目中工作过,代码中显示了eslint错误,但没有导致应用程序崩溃。有人能指出我把事情弄糟的地方吗? 谢谢

  • 我有一个cuda张量列表: 我正在尝试应用k-折叠交叉验证。因此,我想使用k倍索引列表为该列表编制索引: 但它给了我错误: 根据这个答案,问题是我不能使用索引列表来索引列表。在努比是允许的。 所以我试着把它转换成Numpy: 但它给了我一个错误: 我真的必须在索引之前将这些单独的cuda张量移动到cpu吗?如何在cuda上轻松索引cuda张量列表(利用GPU进行训练模型)?或者这是不可能的,我应该

  • 当我尝试在华为P9上运行我的应用程序时,我得到了一个错误 日志: 07-04 10:42:56.045:W/System.err(955):java.lang.NullPoInterException:尝试对空对象引用调用虚拟方法“int com.huawie.lcagent.client.logCollectManager.GetUserType()”07-04 10:42:56.046:W/S

  • 这里是一个初学者,你会看到:)我试图将我的keras (.h5)训练模型转换为TensorFlow Lite格式,但我有以下错误; 属性错误: 类型对象 “TFLite转换器” 没有属性 “from_keras_model”