Python 在keras中的模型定义内更改给定给模型的输入的输入形状
我目前在解决此问题时遇到问题 我有一个网络,在这个网络中,我以各种形状为食Python 在keras中的模型定义内更改给定给模型的输入的输入形状,python,numpy,keras,Python,Numpy,Keras,我目前在解决此问题时遇到问题 我有一个网络,在这个网络中,我以各种形状为食 (batch_size,40,45,3) 但我想对每一行进行1d卷积,然后将每个结果附加到一个列表中 这要求我能够以某种方式提取输入的行,但是如何访问模型定义中的输入数据 这就是目前的情况: def row_convolution(input): filter_size = 8 for units in xrange(splits): extract = input[units:u
(batch_size,40,45,3)
但我想对每一行进行1d卷积,然后将每个结果附加到一个列表中
这要求我能够以某种方式提取输入的行,但是如何访问模型定义中的输入数据
这就是目前的情况:
def row_convolution(input):
filter_size = 8
for units in xrange(splits):
extract = input[units:units+filter_size,:,:]
for row_of_extract in extract:
row_of_extract = np.expand_dims(row_of_extract,axis=0)
temp_list.append((Conv1D(filters = 1, kernel_size = 1, activation='relu' , name = 'conv')(tf.pack(row_of_extract))))
print len(temp_list)
sum_temp_list.append(sum(temp_list))
conv_feature_map.append(sum_temp_list)
return np.array(conv_feature_map)
def output_of_row_convolution(input_shape):
return (1, input_shape)
def fws():
#Input shape: (batch_size,40,45,3)
#output shape: (1,15,50)
# number of unit in conv_feature_map = split
filter_size = 8
temp_list = []
sun_temp_list = []
conv_featur_map = []
model = Sequential()
#convolution
model.add(Lambda(row_convolution,output_shape=output_of_row_convolution,input_shape = (40,45,3)))
model.compile(loss="categorical_crossentropy", optimizer="SGD" , metrics = [metrics.categorical_accuracy])
#Pooling
hist_current = model.fit_generator(train_generator(batch_size),
steps_per_epoch=10,
epochs = 100000,
verbose = 1,
validation_data = test_generator(),
validation_steps=1,
pickle_safe = True,
workers = 4)
fws()
您可能可以进行
重塑
layer@Daniel您具体建议在哪里?我不确定我是否理解您打算选择行的“方式”,但就在Input
之后--模型的一个重要方面是,不能在图层之外进行计算。如果您有自定义操作,它们应该放在Lambda
层中。我使用for循环来执行此操作,因此无法将输出存储到列表中。我尝试使用Lambda层,但输出似乎相同。。错误消息。TypeError:“Tensor”对象不可编辑。