@@ -112,251 +112,6 @@ public override float[][] ComputeTopHiddenLayerOutput(Sequence pSequence)
112
112
return outputs ;
113
113
}
114
114
115
- ///// <summary>
116
- ///// Extract features from source sequence
117
- ///// </summary>
118
- ///// <param name="decoder"></param>
119
- ///// <param name="srcSequence"></param>
120
- ///// <param name="targetSparseFeatureSize"></param>
121
- ///// <param name="srcHiddenAvgOutput"></param>
122
- ///// <param name="srcSparseFeatures"></param>
123
- //private void ExtractSourceSentenceFeature(RNNDecoder decoder, Sequence srcSequence, int targetSparseFeatureSize)
124
- //{
125
- // //Extract dense features from source sequence
126
- // var srcOutputs = decoder.ComputeTopHiddenLayerOutput(srcSequence);
127
- // int srcSequenceDenseFeatureSize = srcOutputs[0].Length;
128
- // int srcSequenceLength = srcOutputs.Length - 1;
129
-
130
- // if (srcHiddenAvgOutput == null)
131
- // {
132
- // srcHiddenAvgOutput = new float[srcSequenceDenseFeatureSize * 2];
133
- // }
134
-
135
- // var j = 0;
136
- // float[] srcOutputForward = srcOutputs[0];
137
- // float[] srcOutputBackward = srcOutputs[srcSequenceLength];
138
- // while (j < srcSequenceDenseFeatureSize - Vector<float>.Count)
139
- // {
140
- // var vForward = new Vector<float>(srcOutputForward, j);
141
- // var vBackward = new Vector<float>(srcOutputBackward, j);
142
-
143
- // vForward.CopyTo(srcHiddenAvgOutput, j);
144
- // vBackward.CopyTo(srcHiddenAvgOutput, srcSequenceDenseFeatureSize + j);
145
-
146
- // j += Vector<float>.Count;
147
- // }
148
-
149
- // while (j < srcSequenceDenseFeatureSize)
150
- // {
151
- // srcHiddenAvgOutput[j] = srcOutputForward[j];
152
- // srcHiddenAvgOutput[srcSequenceDenseFeatureSize + j] = srcOutputBackward[j];
153
- // j++;
154
- // }
155
-
156
- // //Extract sparse features from source sequence
157
- // if (srcSparseFeatures == null)
158
- // {
159
- // srcSparseFeatures = new Dictionary<int, float>();
160
- // }
161
- // else
162
- // {
163
- // srcSparseFeatures.Clear();
164
- // }
165
-
166
- // for (var i = 0; i < srcSequence.States.Length; i++)
167
- // {
168
- // foreach (var kv in srcSequence.States[i].SparseFeature)
169
- // {
170
- // var srcSparseFeatureIndex = kv.Key + targetSparseFeatureSize;
171
-
172
- // if (srcSparseFeatures.ContainsKey(srcSparseFeatureIndex) == false)
173
- // {
174
- // srcSparseFeatures.Add(srcSparseFeatureIndex, kv.Value);
175
- // }
176
- // else
177
- // {
178
- // srcSparseFeatures[srcSparseFeatureIndex] += kv.Value;
179
- // }
180
- // }
181
- // }
182
- //}
183
-
184
- //public override int[] TestSeq2Seq(Sentence srcSentence, Config featurizer)
185
- //{
186
- // var curState = featurizer.BuildState(new[] { "<s>" });
187
- // curState.Label = featurizer.TagSet.GetIndex("<s>");
188
-
189
- // //Reset all layers
190
- // foreach (var layer in HiddenLayerList)
191
- // {
192
- // layer.Reset();
193
- // }
194
-
195
- // //Extract features from source sentence
196
- // var srcSequence = featurizer.Seq2SeqAutoEncoder.Config.BuildSequence(srcSentence);
197
-
198
- // ExtractSourceSentenceFeature(featurizer.Seq2SeqAutoEncoder, srcSequence, curState.SparseFeature.Length);
199
-
200
- // var numLayers = HiddenLayerList.Count;
201
- // var predicted = new List<int> { curState.Label };
202
-
203
- // CreateDenseFeatureList();
204
- // for (int i = 0; i < numLayers; i++)
205
- // {
206
- // srcHiddenAvgOutput.CopyTo(denseFeaturesList[i], 0);
207
- // }
208
- // srcHiddenAvgOutput.CopyTo(denseFeaturesList[numLayers], 0);
209
-
210
- // var sparseVector = new SparseVector();
211
- // while (true)
212
- // {
213
- // //Build sparse features
214
- // sparseVector.Clean();
215
- // sparseVector.SetLength(curState.SparseFeature.Length + srcSequence.SparseFeatureSize);
216
- // sparseVector.AddKeyValuePairData(curState.SparseFeature);
217
- // sparseVector.AddKeyValuePairData(srcSparseFeatures);
218
-
219
- // //Compute first layer
220
- // curState.DenseFeature.CopyTo().CopyTo(denseFeaturesList[0], srcHiddenAvgOutput.Length);
221
- // HiddenLayerList[0].ForwardPass(sparseVector, denseFeaturesList[0]);
222
-
223
- // //Compute middle layers
224
- // for (var i = 1; i < numLayers; i++)
225
- // {
226
- // //We use previous layer's output as dense feature for current layer
227
- // HiddenLayerList[i - 1].Cells.CopyTo(denseFeaturesList[i], srcHiddenAvgOutput.Length);
228
- // HiddenLayerList[i].ForwardPass(sparseVector, denseFeaturesList[i]);
229
- // }
230
-
231
- // //Compute output layer
232
- // HiddenLayerList[numLayers - 1].Cells.CopyTo(denseFeaturesList[numLayers], srcHiddenAvgOutput.Length);
233
- // OutputLayer.ForwardPass(sparseVector, denseFeaturesList[numLayers]);
234
-
235
- // var nextTagId = OutputLayer.GetBestOutputIndex();
236
- // var nextWord = featurizer.TagSet.GetTagName(nextTagId);
237
-
238
- // curState = featurizer.BuildState(new[] { nextWord });
239
- // curState.Label = nextTagId;
240
-
241
- // predicted.Add(nextTagId);
242
-
243
- // if (nextWord == "</s>" || predicted.Count >= 100)
244
- // {
245
- // break;
246
- // }
247
- // }
248
-
249
- // return predicted.ToArray();
250
- //}
251
-
252
- //List<float[]> denseFeaturesList = null;
253
- //float[] srcHiddenAvgOutput;
254
- //Dictionary<int, float> srcSparseFeatures;
255
- //private void CreateDenseFeatureList()
256
- //{
257
- // if (denseFeaturesList == null)
258
- // {
259
- // denseFeaturesList = new List<float[]>();
260
- // for (int i = 0; i < HiddenLayerList.Count; i++)
261
- // {
262
- // denseFeaturesList.Add(new float[2048]);
263
- // }
264
-
265
- // denseFeaturesList.Add(new float[2048]);
266
- // }
267
- //}
268
-
269
- //public override int[] ProcessSeq2Seq(SequencePair pSequence, RunningMode runningMode)
270
- //{
271
- // var tgtSequence = pSequence.tgtSequence;
272
-
273
- // //Reset all layers
274
- // foreach (var layer in HiddenLayerList)
275
- // {
276
- // layer.Reset();
277
- // }
278
-
279
- // Sequence srcSequence;
280
-
281
- // //Extract features from source sentences
282
- // srcSequence = pSequence.autoEncoder.Config.BuildSequence(pSequence.srcSentence);
283
- // ExtractSourceSentenceFeature(pSequence.autoEncoder, srcSequence, tgtSequence.SparseFeatureSize);
284
-
285
- // var numStates = pSequence.tgtSequence.States.Length;
286
- // var numLayers = HiddenLayerList.Count;
287
- // var predicted = new int[numStates];
288
-
289
- // //Set target sentence labels into short list in output layer
290
- // OutputLayer.LabelShortList.Clear();
291
- // foreach (var state in tgtSequence.States)
292
- // {
293
- // OutputLayer.LabelShortList.Add(state.Label);
294
- // }
295
-
296
- // CreateDenseFeatureList();
297
- // for (int i = 0; i < numLayers; i++)
298
- // {
299
- // srcHiddenAvgOutput.CopyTo(denseFeaturesList[i], 0);
300
- // }
301
- // srcHiddenAvgOutput.CopyTo(denseFeaturesList[numLayers], 0);
302
-
303
- // var sparseVector = new SparseVector();
304
- // for (var curState = 0; curState < numStates; curState++)
305
- // {
306
- // //Build runtime features
307
- // var state = tgtSequence.States[curState];
308
- // SetRuntimeFeatures(state, curState, numStates, predicted);
309
-
310
- // //Build sparse features for all layers
311
- // sparseVector.Clean();
312
- // sparseVector.SetLength(tgtSequence.SparseFeatureSize + srcSequence.SparseFeatureSize);
313
- // sparseVector.AddKeyValuePairData(state.SparseFeature);
314
- // sparseVector.AddKeyValuePairData(srcSparseFeatures);
315
-
316
- // //Compute first layer
317
- // state.DenseFeature.CopyTo().CopyTo(denseFeaturesList[0], srcHiddenAvgOutput.Length);
318
- // HiddenLayerList[0].ForwardPass(sparseVector, denseFeaturesList[0]);
319
-
320
- // //Compute middle layers
321
- // for (var i = 1; i < numLayers; i++)
322
- // {
323
- // //We use previous layer's output as dense feature for current layer
324
- // HiddenLayerList[i - 1].Cells.CopyTo(denseFeaturesList[i], srcHiddenAvgOutput.Length);
325
- // HiddenLayerList[i].ForwardPass(sparseVector, denseFeaturesList[i]);
326
- // }
327
-
328
- // //Compute output layer
329
- // HiddenLayerList[numLayers - 1].Cells.CopyTo(denseFeaturesList[numLayers], srcHiddenAvgOutput.Length);
330
- // OutputLayer.ForwardPass(sparseVector, denseFeaturesList[numLayers]);
331
-
332
- // predicted[curState] = OutputLayer.GetBestOutputIndex();
333
-
334
- // if (runningMode == RunningMode.Training)
335
- // {
336
- // // error propogation
337
- // OutputLayer.ComputeLayerErr(CRFSeqOutput, state, curState);
338
-
339
- // //propogate errors to each layer from output layer to input layer
340
- // HiddenLayerList[numLayers - 1].ComputeLayerErr(OutputLayer);
341
- // for (var i = numLayers - 2; i >= 0; i--)
342
- // {
343
- // HiddenLayerList[i].ComputeLayerErr(HiddenLayerList[i + 1]);
344
- // }
345
-
346
- // //Update net weights
347
- // OutputLayer.BackwardPass();
348
-
349
- // for (var i = 0; i < numLayers; i++)
350
- // {
351
- // HiddenLayerList[i].BackwardPass();
352
- // }
353
-
354
- // }
355
- // }
356
-
357
- // return predicted;
358
- //}
359
-
360
115
public override int [ ] ProcessSequence ( ISentence sentence , Config featurizer , RunningMode runningMode , bool outputRawScore , out Matrix < float > m )
361
116
{
362
117
var seq = featurizer . BuildSequence ( sentence as Sentence ) ;
@@ -560,6 +315,7 @@ public override void LoadModel(string filename, bool bTrain = false)
560
315
if ( bTrain )
561
316
{
562
317
OutputLayer . SetRunningMode ( RunningMode . Training ) ;
318
+ OutputLayer . InitializeInternalTrainingParameters ( ) ;
563
319
}
564
320
else
565
321
{
0 commit comments