Python 在numpy数组中包含不同形状信息的最佳方法?

Python 在numpy数组中包含不同形状信息的最佳方法?,python,numpy,matrix,Python,Numpy,Matrix,我想为带有卷积层的MNIST图像实现条件变分自动编码器,而不是平坦化。因此图像本身是[batch\u size,28,28,1](灰度)。我想用图像输入连接标签。但是我不能用[批量大小,10]来压缩上面的形状。我正在考虑扩展图像,例如像[batch\u size,38,28,1],或者只是添加一个新的“行”-使形状[batch\u size,29,28,1],直到10,“column”值表示图像的类别,但它感觉不到正确的方法。以前有人遇到过同样的问题吗?“正确”(est)的方法是什么?在tens

我想为带有卷积层的MNIST图像实现条件变分自动编码器,而不是平坦化。因此图像本身是
[batch\u size,28,28,1]
(灰度)。我想用图像输入连接标签。但是我不能用
[批量大小,10]
来压缩上面的形状。我正在考虑扩展图像,例如像
[batch\u size,38,28,1]
,或者只是添加一个新的“行”-使形状
[batch\u size,29,28,1]
,直到10,“column”值表示图像的类别,但它感觉不到正确的方法。以前有人遇到过同样的问题吗?“正确”(est)的方法是什么?

在tensorflow中,您可以定义一个具有多个输入的模型,因此没有理由将一种数据(MNST的标签)嵌入到另一种数据(图像的像素)中。它们可以单独建模,也可以在模型中的任何步骤进行组合。比如说,

import tensorflow as tf, numpy as np

#Random Data
X1 = np.random.random((1000,28,28,1))
X2 = np.random.random((1000,10))
Y  = np.random.random((1000,10))

#Create Model

x11 = tf.keras.layers.Input((28,28,1)) #Input of first data
x12 = tf.keras.layers.Flatten()(x11)
x13 = tf.keras.layers.Dense(100)(x12) 

x21 = tf.keras.layers.Input((10,))     #Input of second data
x22 = tf.keras.layers.Dense(100)(x21)

c1  = tf.keras.layers.Multiply()([x13,x22]) #Combine data together
c2  = tf.keras.layers.Dense(10)(c1)

model = tf.keras.models.Model([x11,x21],c2)
model.compile('adam','mse')
model.fit([X1,X2],Y,epochs=10)