私はこのnumpy
機能を持っています、私はそれを次のように単純化しました:
def _func(new_inputs, X):
""" Basically any operation. Below is just an example """
outputs = new_inputs + X
new_inputs.pop(0)
return outputs, new_inputs
new_inputs = []
flag = True
while flag:
outputs, new_inputs = _func(new_inputs, X)
X = np.concatenate([X, outputs], axis=0)
if not new_inputs:
flag = False
AutoGraph でサポートできる同等の TF 関数に変換したいと考えています。TF 2.4.1 を使用していますが、Beam コンテキストで実行する必要があるため、グラフ計算で実行する必要があります。
これは私の試みです:
def function_to_solve():
new_inputs = tf.constant([])
flag = tf.constant(True)
outputs = tf.constant([])
X = tf.TensorArray(dtype=tf.float32, infer_shape=False, size=1,
dynamic_size=True)
def _func(new_inputs, X):
return outputs, new_inputs
def loop_func(flag, new_inputs, outputs, X, i):
outputs, new_inputs = _func(new_inputs, X)
X.write(i, outputs)
if i==2:
flag = False
return flag, new_inputs, outputs, X, i+1
def condition(flag, *args):
return flag
_, _, _, X, _ = tf.while_loop(condition, loop_func, [flag, new_inputs, outputs, X, 0])
X.concat()
return X
次に、Beam コンテキストで呼び出します。
import pprint
import tempfile
import tensorflow as tf
import tensorflow_transform as tft
import tensorflow_transform.beam.impl as tft_beam
from tensorflow_transform.tf_metadata import dataset_metadata
from tensorflow_transform.tf_metadata import dataset_schema
raw_data = [
{'x': [1, 2, 0, 0, 0, 0.3, 10, 1, 1.4]},
]
raw_data_metadata = dataset_metadata.DatasetMetadata(
dataset_schema.from_feature_spec({
'x': tf.io.FixedLenFeature(shape=(9,), dtype=tf.float32),
}))
def preprocessing_fn(inputs):
outputs = function_to_solve()
return {
'outputs ': outputs
}
with tft_beam.Context(temp_dir=tempfile.mkdtemp()):
transformed_dataset, transform_fn = (
(raw_data, raw_data_metadata) | tft_beam.AnalyzeAndTransformDataset(
preprocessing_fn))
transformed_data, transformed_metadata = transformed_dataset
print('\nRaw data:\n{}\n'.format(pprint.pformat(raw_data)))
print('Transformed data:\n{}'.format(pprint.pformat(transformed_data)))
次のエラーが発生しました。
AttributeError: 'TensorArray' object has no attribute 'get_shape'
誰でも助けてもらえますか?ありがとう!