Python 尝试连接keras模型:ValueError:无法将NumPy数组转换为张量(不支持的对象类型float)

Python 尝试连接keras模型:ValueError:无法将NumPy数组转换为张量(不支持的对象类型float),python,keras,concatenation,Python,Keras,Concatenation,我试图在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) # mode

我试图在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)
我得到的错误是

ValueError:无法将NumPy数组转换为张量(不支持的对象类型float)

并发生在model.fit线处

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

#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行, 在里面 历史=模型拟合([train_x_1,train_x_2],train_y,历代=100,批次大小=72,验证数据=([test_x_1,test_x_2],test_y), verbose=2,shuffle=False)文件 “/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow_core/Python/keras/engine/training.py”, 第728行,合适的 use_multiprocessing=use_multiprocessing)File“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow_core/Python/keras/engine/training_v2.py”,第224行 分发策略=策略)文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow\u core/Python/keras/engine/training\u v2.py”,第547行,过程中的培训输入 use_multiprocessing=use_multiprocessing)File“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow_core/Python/keras/engine/training_v2.py”,第606行,在_进程输入中 use_multiprocessing=use_multiprocessing)File“/Library/Frameworks/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)File”/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow_core/Python/keras/engine/data_adapter.py“, 第703行,进程内输入 inputs=nest.map_结构(_convert_non_tensor,inputs)文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow_core/Python/util/nest.py”, 第535行,在map_结构中 结构[0],[func(*x)表示条目中的x],文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow_core/Python/util/nest.py”, 第535行,输入 结构[0],[func(*x)表示条目中的x],文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow_core/Python/keras/engine/data_adapter.py”, 第700行,in _转换非_张量 返回ops.convert_to_tensor(x)文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow_core/Python/framework/ops.py”, 第1184行,转换为张量 返回convert_to_tensor_v2(值、数据类型、首选数据类型、名称)文件 “/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow_core/Python/framework/ops.py”, 第1242行,转换为张量 as_ref=False)File“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow_core/Python/framework/ops.py”, 第1296行,在内部,转换为张量 ret=conversion\u func(value,dtype=dtype,name=name,as\u ref=as\u ref)文件 “/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow\u core/Python/framework/tensor\u conversion\u registry.py”, 第52行,输入默认转换函数 返回constant_op.constant(value,dtype,name=name)文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow_core/Python/framework/constant_op.py”, 第227行,常数 allow_broadcast=True)File“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow_core/Python/framework/constant_op.py”, 第235行,单位为常量 t=convert_to_eager_tensor(value,ctx,dtype)文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow_core/Python/framework/constant_op.py”, 第96行,转换为张量 return ops.quengentensor(value,ctx.device_name,dtype)value错误:无法将NumPy数组转换为Tensor(不支持的对象类型 浮动)


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

x_2的值均为类型
float
,而
x_1的值为


使用
x2将
x2
修改为
float32
。aType('float32')
解决了这个问题。

请添加完整的错误跟踪。@VivekMehta谢谢-刚刚添加了解决方法:x_2的值都是类型float,而x_1的值是float32。astype('float32')解决了我的问题