我有一个主要任务。为了实现这一点,我正在播放一些合成数据来理解流程
我有一个数据,比如说,有5个通道。我想用这5个通道,使用5个输入层,为一个模型(比如说model_1
)提供数据。然后,我想用model_1
的输出提供一个连接和密集层
def create_model():
input_x = Input(shape=(1000, 1), dtype='float32')
reshape = Reshape((1000, 1))(input_x)
conv_1 = Conv1D(16, kernel_size=(64), activation='relu')(reshape)
maxpool_1 = MaxPool1D(pool_size=(4))(conv_1)
bn_1 = BatchNormalization()(maxpool_1)
conv_2 = Conv1D(32, kernel_size=(32), activation='relu')(bn_1)
maxpool_2 = MaxPool1D(pool_size=(4))(conv_2)
bn_2 = BatchNormalization()(maxpool_2)
conv_3 = Conv1D(64, kernel_size=(16), activation='relu')(bn_2)
bn_3 = BatchNormalization()(conv_3)
conv_4 = Conv1D(128, kernel_size=(4), activation='relu')(bn_3)
flatten = Flatten()(conv_4)
dense1 = Dense(units=128, activation='relu')(flatten)
out = Dense(units=64, activation='relu')(dense1)
model = Model(input_x, out)
inputA = Input(shape=(1000, 1), dtype='float32')
inputB = Input(shape=(1000, 1), dtype='float32')
inputC = Input(shape=(1000, 1), dtype='float32')
inputD = Input(shape=(1000, 1), dtype='float32')
inputE = Input(shape=(1000, 1), dtype='float32')
cnn_out1 = model(inputA)
cnn_out2 = model(inputB)
cnn_out3 = model(inputC)
cnn_out4 = model(inputD)
cnn_out5 = model(inputE)
combined = concatenate([cnn_out1, cnn_out2, cnn_out3, cnn_out4, cnn_out5], axis=-1)
fully_connected = Dense(128, activation="relu")(combined)
outputs_fc = Dense(21, activation="softmax")(fully_connected)
model_encoded = Model(inputs=[inputA, inputB, inputC, inputD, inputE], outputs=outputs_fc)
model_encoded.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
print(model_encoded.summary())
return model_encoded
摘要:
模型图:
# generator that generates random data
def data_gen():
x_buffer = []
y_buffer = []
xstack = []
ystack = []
while True:
data = np.random.randint(1000, size=(1000, 1))
label = np.random.randint(5)
if len(xstack) == 5:
x_buffer.append(np.array(xstack))
y_buffer.append(np.array(ystack))
xstack = []
ystack = []
if len(x_buffer) == 5:
yield x_buffer, y_buffer
x_buffer = []
y_buffer = []
else:
xstack.append(data)
ystack.append(label)
通过这个实现,我得到了以下错误:ValueError: Error when checking input: expected input_27 to have 2 dimensions, but got array with shape (5, 1000, 1)
我真的无法解释发电机的作用,因为我真的尝试了很多组合,我感到头晕。我愿意接受任何代码级别或抽象建议。我怎样才能做到这一点
在主要问题中,我有4节课。数据有一些组合。数据可以作为以下其中一种方式输入模型:
0 - [0,0,0,0,0]
1 - [1,1,1,1,1]
2 - [2,2,2,2,2]
3 - [3,3,3,3,3]
4 - [0,1,1,1,1]
5 - [0,2,2,2,2]
6 - [0,3,3,3,3]
7 - [1,1,1,1,0]
8 - [2,2,2,2,0]
9 - [3,3,3,3,0]
10 - [0,1,1,1,0]
11 - [0,2,2,2,0]
12 - [0,3,3,3,0]
13 - [0,1,1,0,0]
14 - [0,2,2,0,0]
15 - [0,3,3,0,0]
16 - [0,0,1,1,0]
17 - [0,0,2,2,0]
18 - [0,0,3,3,0]
19 - [0,0,1,0,0]
20 - [0,0,2,0,0]
21 - [0,0,3,0,0]
4个等级和5个通道有这22种组合。最后,我想让模型学习并预测其中一种组合。通过这一点,我想实现模型学习“好的,如果前两个通道是0,它不能像[0,0,1,1,1]”之类的东西
如果它太抽象的话很抱歉,但我真的卡住了。如有任何建议或更正,将不胜感激
目前没有回答
相关问题 更多 >
编程相关推荐