简体   繁体   English

有没有办法在javascript中使用keras.pad_sequences?

[英]is there a way to use keras.pad_sequences in javascript?

@keras_export('keras.preprocessing.sequence.pad_sequences')
def pad_sequences(sequences, maxlen=None, dtype='int32',
                  padding='pre', truncating='pre', value=0.):

return sequence.pad_sequences(
    sequences, maxlen=maxlen, dtype=dtype,
    padding=padding, truncating=truncating, value=value)

I want to transform this code to javascript.我想将此代码转换为 javascript。

It works like this:它是这样工作的:

sequence = [[1], [2, 3], [4, 5, 6]]

tf.keras.preprocessing.sequence.pad_sequences(sequence, maxlen=2)
array = 

0,1

2,3

5,6

You can truncate and pad your sequences with Javascript like this:您可以像这样使用 Javascript 截断和填充序列:

const sequence = [[1], [2, 3], [4, 5, 6]];

var new_sequence = sequence.map(function(e) {
  const max_length = 2;
  const row_length = e.length 
  if (row_length > max_length){ // truncate
      return e.slice(row_length - max_length, row_length)
  }
  else if (row_length < max_length){ // pad
      return Array(max_length - row_length).fill(0).concat(e);
  }
  return e;
});
console.log('Before truncating and paddig: ',sequence)
console.log('After truncating and paddig: ', new_sequence)
// "Before truncating and paddig: ", [[1], [2, 3], [4, 5, 6]]
// "After truncating and paddig: ", [[0, 1], [2, 3], [5, 6]]

which is equivalent to the following Python code with Tensorflow:这相当于以下带有 Tensorflow 的 Python 代码:

import tensorflow as tf

def truncate_and_pad(row):
  row_length = tf.shape(row)[0]
  if tf.greater(row_length, max_length): # truncate
    return row[row_length-max_length:]
  elif tf.less(row_length, max_length): # pad
    padding = tf.constant([[max_length-row_length.numpy(), 0]])
    return tf.pad(row, padding, "CONSTANT")
  else: return row

max_length = 2
sequence = tf.ragged.constant([[1], [2, 3], [4, 5, 6]])
Y = tf.map_fn(truncate_and_pad, sequence)

but you actually do not need any fancy functions.但你实际上不需要任何花哨的功能。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM