tensorflow.keras模型,具有不同形状的多个输入(错误)

2024-03-28 20:16:41 发布

您现在位置:Python中文网/ 问答频道 /正文

嘿,我想建立一个Keras模型,有多个不同形状的输入。 这是我的模型:

input_shape_board = (8,8,12)
input_board = tf.keras.Input(shape = input_shape_board, name = "board_input")
        
input_shape_legal = (1984)
input_legal = tf.keras.Input(shape = input_shape_legal, name = "legal_input")

a = layers.Dense(64)(input_board)
a = tf.keras.layers.LeakyReLU(alpha=0.01)(a)
a = layers.Dense(64)(a)
a = layers.Flatten()(a)
        
b = layers.Conv2D(64, 4, activation='relu')(input_board)
b = layers.MaxPooling2D((4,4))(b)
b = layers.Flatten()(b)
        
c = layers.Dense(200, activation='relu')(input_legal)
        
d = layers.Concatenate()([a,b,c])
        
d = layers.Dense(1984)(d)
outputs = layers.Activation('sigmoid')(d)   

model = tf.keras.Model(inputs=(input_board, input_legal), outputs=outputs)  
        

我稍后会使用(某种程度上-使用适应值)以下内容进行培训:

board_array_onehot = np.ones((1,8,8,12))
tmp_arr_legal = np.ones((1984))
inputs = (board_array_onehot, tmp_arr_legal[0])

arr_predictions = models[active].predict(inputs)

我已确保所有输入都是numpy数组,但现在出现以下错误:

ValueError: Failed to find data adapter that can handle input: (<class 'tuple'> containing values of types {"<class 'numpy.float64'>", "<class 'numpy.ndarray'>"}), <class 'NoneType'>

我已经尝试了几种不同的方法来使用这个括号和我的输入,但是仍然不起作用。非常感谢您的帮助


Tags: 模型numpyboardinputlayerstfoutputsclass
1条回答
网友
1楼 · 发布于 2024-03-28 20:16:41

在这个模型的tensorflow中,我通过在fed输入前增加一个额外的维度来解决它

因此,虽然我已经定义了:

input_shape_board = (8,8,12)
input_board = tf.keras.Input(shape = input_shape_board, name = "board_input")

input_shape_legal = (1984)
input_legal = tf.keras.Input(shape = input_shape_legal, name = "legal_input")

事实上,我必须喂养:

board_array_onehot = np.ones((1,8,8,12))
tmp_arr_legal = np.ones((1,1984))
inputs = (board_array_onehot, tmp_arr_legal[0])

arr_predictions = models[active].predict(inputs)

但我不明白为什么

相关问题 更多 >