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

尝试连接keras模型:值错误:未能将NumPy数组转换为张量(不支持的对象类型浮点)

羊舌高爽
2023-03-14

我试图在keras中连接两个并行模型,每个模型都有不同的输入。相关代码如下。

# model 1
model1_in = Input(shape=(train_x_1.shape[1], train_x_1.shape[2]))
model1_out = LSTM(50, activation='relu',return_sequences=False, name='layer_1')(model1_in)
model1 = Model(model1_in, model1_out)

# model 2
model2_in = Input(shape=(1))
model2_out = Dense(8, activation='relu', name='layer_2')(model2_in)
model2 = Model(model2_in, model2_out)

concatenated = concatenate(inputs=[model1.output, model2.output])
out = Dense(1, activation='relu', name='output_layer')(concatenated)
model = Model([model1_in, model2_in], out)
model.compile(loss='mean_absolute_error', optimizer='adam')


# fit network
history = model.fit([train_x_1,train_x_2], train_y, epochs=100, batch_size=72, validation_data=([test_x_1,test_x_2], test_y), verbose=2, shuffle=False)

我得到的错误是

将NumPy数组转换为张量失败(不支持的对象类型浮点数)。

并在模型上发生。装配线。

我在空转。训练值和测试值都是数组,我检查了所有训练输入的长度是否相同:

#train_x_1.shape[0]
15465
#train_y.shape[0]
15465
#train_x_2.shape[0]
15465
#test_x_1.shape[0]
1719
#test_x_2.shape[0]
1719
#test_y.shape[0]
1719
#test_x_1
array([[[0.6243922 ],
        [0.5463666 ],
        [0.7083546 ], ... etc ...

任何帮助都将不胜感激-提前感谢!

完整的错误跟踪如下所示:

回溯(最近的调用最后):文件filepath.py,行220,在历史=model.fit([train_x_1,train_x_2],train_y,时代=100,batch_size=72,validation_data=([test_x_1,test_x_2],test_y),冗长=2,洗牌=假)文件/库/框架/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow_core/python/keras/engine/training.py",第728行,适合use_multiprocessing=use_multiprocessing)文件"/库/框架/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow_core/python/keras/engine/training_v2.py",第224行,适合distribution_strategy=策略)文件"/库/框架/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow_core/python/keras/engine/training_v2.py",第547行,_process_training_inputs=use_multiprocessing)文件“/库/框架/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow_core/python/keras/engine/training_v2.py”,第606行,_process_inputsuse_multiprocessing=use_multiprocessing)文件“/库/框架/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow_core/python/keras/engine/data_adapter.py”,第217行,在init x=_process_numpy_inputs(x)文件“/库/框架/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow_core/python/keras/engine/data_adapter.py”,第703行,在_process_numpy_inputs输入=nest.map_structure(_convert_non_tensor,输入)文件/库/框架/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow_core/python/util/nest.py,第535行,map_structure结构[0],条目中x的[func(*x)],文件/库/框架/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow_core/python/util/nest.py,第535行,在结构[0]中,[func(*x)用于条目中的x],文件"/库/框架/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow_core/python/keras/engine/data_adapter.py",第700行,_convert_non_tensor返回ops.convert(x)文件"/库/框架/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow_core/python/framework/ops.py",第1184行,在convert_to_tensor返回convert_to_tensor_v2(值,dtype,preferred_dtype,名称)文件"/库/框架/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow_core/python/framework/ops.py",第1242行,convert_to_tensor_v2as_ref=False)文件"/库/框架/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow_core/python/framework/ops.py",第1296行,internal_convert_to_tensorret=conversion_func(值,dtype=dtype,名称=名称,as_ref=as_ref)文件"/库/框架/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow_core/python/framework/tensor_conversion_registry.py",第52行,_default_conversion_function返回constant_op.constant(值,dtype,名称=名称)文件"/库/框架/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow_core/python/framework/constant_op.py",第227行,常量allow_broadcast=True)文件"/库/框架/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow_core/python/framework/constant_op.py",第235行,_constant_implt=convert_to_eager_tensor(value, ctx, dtype)File"/库/框架/Python.框架/版本/3.6/lib/python3.6/site-包/tensorflow_core/python/框架/constant_op. py",第96行,convert_to_eager_tensor返回ops。EagerTensor(value, ctx.device_name, dtype)ValueError:无法将NumPy数组转换为张量(不支持的对象类型浮点数)。

共有1个答案

欧浩淼
2023-03-14

为了社区的利益,在回答部分指定解决方案(即使它存在于评论部分)。

x_2的值均为typefloat,而x_1的值为float32

使用x2修改为Float32x2.astype('Float32')已解决此问题。

 类似资料:
  • 我正在创建一个由数组支持的泛型类型堆栈。当我尝试创建泛型类型数组时,Java不允许我这样做。有人告诉我,我必须创建一个类型为Object的数组,并将其转换为泛型类型。我已经将对象数组转换为类型,但如何处理Java不断给我的未检查类型错误? 这就是我目前所处的位置。 更新:我正在创建一个对象数组,然后在方法的末尾将返回类型转换为T类型。

  • 问题内容: 我正在使用返回“对象”类型的普通对象的Web服务。调试清楚地表明此对象中存在某种Array,因此我想知道如何将“ Object”转换为Array(或类似对象)? 我尝试了以下方法: 但是没有任何效果。我总是得到一个InvocationTargetException。 我究竟做错了什么? 编辑 : 可悲的是,我不得不删除指向显示Eclipse调试器输出的图像的链接,因为它不再可用。请不要

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

  • 问题内容: 将Tensorflow与Python绑定一起使用时,如何将张量转换为numpy数组? 问题答案: 急切执行默认情况下 处于启用状态,因此只需调用Tensor对象即可。 有关更多信息,请参见NumPy兼容性。值得注意的是(来自文档), Numpy数组可以与Tensor对象共享内存。 对一个的任何更改都可能反映在另一个上。 大胆强调我的。副本可以返回也可以不返回,这是基于数据是在CPU还是

  • 这是我的pojo课程 3.这是我的存储库。 4.获取以下错误:

  • 我正试图通过提供JSON格式的所需请求来使用postman来访问一个服务: 邮递员屏幕 但我得到了一个错误: “无法将类型”java.lang.String“的值转换为所需的类型”SampleRequestObject“;嵌套异常为java.lang.IllegalStateException:无法将类型[java.lang.String]的值转换为所需类型“ 控制器 SampleRequestO