matlab中输入张量,在Matlab中使用张量流模型

我训练了一个LSTM模型,使用Tensorflow将每个时间步的9个输入映射到7个输出。现在我在Matlab中重建了模型,但是结果(我绘制了轨迹)似乎不正确。在

我只需在Matlab中加载LSTM网络的训练权重矩阵。此外,我在Matlab中手工实现了前向传播规则,并插入了权重矩阵function [outputs,states] = unfoldNetwork(obj,inputs)

numInputs = size(inputs,1);

input_output = [inputs(1,:)' ; zeros(obj.num_hidden,1)];

state = zeros(obj.num_hidden,1);

outputs = zeros(numInputs, obj.output_dim);

states = zeros(numInputs, obj.num_hidden);

for i=1:numInputs

[output,state] = fp(obj,state,input_output);

input_output = [inputs(i,:)' ; output];

outputs(i,:) = (obj.output_W * output + obj.output_b)'; % transfer to output-dimension

states(i,:) = state';

end

end

function [output,state] = fp(obj,state,input_output)

i = obj.sigmoid(obj.weights(1:obj.num_hidden,:) * input_output + obj.biases(1:obj.num_hidden));

g = tanh(obj.weights(obj.num_hidden+1:2*obj.num_hidden,:) * input_output + obj.biases(obj.num_hidden+1:2*obj.num_hidden));

f = obj.sigmoid(obj.weights(2*obj.num_hidden+1:3*obj.num_hidden,:) * input_output + obj.biases(2*obj.num_hidden+1:3*obj.num_hidden));

o = obj.sigmoid(obj.weights(3*obj.num_hidden+1:4*obj.num_hidden,:) * input_output + obj.biases(3*obj.num_hidden+1:4*obj.num_hidden));

state = f.*state + i.*g;

output = o.* tanh(state);

end

function [argout] = sigmoid(obj,x)

argout = 1./(1+exp(-x));

end

张量流中的网络基本上是这样的

^{pr2}$

在图像中,您可以在一开始看到matlabdo中的预测(有点偏移)与Python中的预测相对应。在那之后,它会变得有点偏颇。我很确定前向传播规则和权重矩阵是正确的。因为我确实改变了一些矩阵或者前向传播的规则,然后一切都变得一团糟。在

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值