我正在学习Keras并需要以下方面的帮助。我目前在列表X和Y中有一系列浮点数。我需要做的是使用非线性映射将每个元素映射到更高维度的向量,遵循以下等式。
pos(i) = tanh(W.[concat(X[i],Y[i]])
#where W is a learnable weight matrix, concat performs the concatenation and pos(i) is a vector of 16x1. (I'm trying to create 16 channel inputs for a CNN).
我发现上面的Pytorch实现是
m = nn.linear(2,16)
input = torch.cat(X[i],Y[i])
torch.nn.functional.tanh(m(input))
目前我已经在numpy尝试了concat和tanh,这似乎不是我想要的。
您能否帮助我使用Keras实现上述目标。
答案 0 :(得分:1)
根据你的情况而定。
这就是我在keras中所做的。我假设您只是希望在将输入输入模型之前连接输入。
所以我们用numpy来做。注意
类似的东西:
import numpy as np
from keras.model import Dense, Model,Input
X = np.random.rand(100, 1)
Y = np.random.rand(100, 1)
y = np.random.rand(100, 16)
# concatenate along the features in numpy
XY = np.cancatenate(X, Y, axis=1)
# write model
in = Input(shape=(2, ))
out = Dense(16, activation='tanh')(in)
# print(out.shape) (?, 16)
model = Model(in, out)
model.compile(loss='mse', optimizer='adam')
model.fit(XY, y)
....