Neural network 如何在Keras中构建一个递归神经网络,其中每个输入首先经过一层?
我正试图在Keras中建立一个神经网络,看起来像这样:Neural network 如何在Keras中构建一个递归神经网络,其中每个输入首先经过一层?,neural-network,deep-learning,keras,recurrent-neural-network,rnn,Neural Network,Deep Learning,Keras,Recurrent Neural Network,Rnn,我正试图在Keras中建立一个神经网络,看起来像这样: x_dims = [50, 40, 30, 20, 10] n = 5 def network(): shared_f = Conv1D(5, 3, activation='relu') shated_LSTM = LSTM(10) inputs = [] to_concat = [] for i in range(n): x_i = Input(shape=(x_dims[i
x_dims = [50, 40, 30, 20, 10]
n = 5
def network():
shared_f = Conv1D(5, 3, activation='relu')
shated_LSTM = LSTM(10)
inputs = []
to_concat = []
for i in range(n):
x_i = Input(shape=(x_dims[i], 1), name='x_' + str(i))
inputs.append(x_i)
step1 = shared_f(x_i)
to_concat.append(shated_LSTM(step1))
merged = concatenate(to_concat)
final = Dense(2, activation='softmax')(merged)
model = Model(inputs=inputs, outputs=[final])
# model = Model(inputs=[sequence], outputs=[part1])
model.compile(loss='mse', optimizer='adam', metrics=['accuracy'])
return model
m = network()
其中x_1,x_2。。。是经过相同变换f的输入向量。f本身就是一个必须学习其参数的层。序列长度n在实例之间是可变的
我很难理解这里的两件事:
我考虑的是一个具有形状的二维张量(输入的数量,x维),其中x维是单个向量的长度$x$。这样的二维张量可以有一个可变的形状吗?我知道张量可以有不同的形状用于批处理,但我不知道这是否对我有帮助
是否有一种方法可以对GRU进行排序,例如,在通过实际GRU单元之前添加一个f层
我不是专家,但我希望这能有所帮助 问题1: 向量x1,x2。。。xn可以有不同的形状,但我不确定x1的实例是否可以有不同的形状。当我有不同的形状时,我通常用0填充短序列 问题2: 我不确定是否要扩展GRU,但我会这样做:
x_dims = [50, 40, 30, 20, 10]
n = 5
def network():
shared_f = Conv1D(5, 3, activation='relu')
shated_LSTM = LSTM(10)
inputs = []
to_concat = []
for i in range(n):
x_i = Input(shape=(x_dims[i], 1), name='x_' + str(i))
inputs.append(x_i)
step1 = shared_f(x_i)
to_concat.append(shated_LSTM(step1))
merged = concatenate(to_concat)
final = Dense(2, activation='softmax')(merged)
model = Model(inputs=inputs, outputs=[final])
# model = Model(inputs=[sequence], outputs=[part1])
model.compile(loss='mse', optimizer='adam', metrics=['accuracy'])
return model
m = network()
在本例中,我使用Conv1D作为共享f
转换,但您可以使用其他转换(嵌入等)