Python 3.x M1 MacBook Apple ML compute Tensorflow2.4与Numpy的兼容性问题

Python 3.x M1 MacBook Apple ML compute Tensorflow2.4与Numpy的兼容性问题,python-3.x,numpy,tensorflow,keras,Python 3.x,Numpy,Tensorflow,Keras,我正在运行新的苹果原生tensorflow软件包2.4,遇到了一个以前没有遇到过的问题。这段jupyter笔记本代码在旧的基于intel的环境中工作,该环境使用了旧的tensorflow版本。但与M1 apple MLcomputer TensorFlow2.4不兼容 使用Numpy 1.20或1.18(我将Numpy降级以进行尝试)。错误日志: NotImplementedError: Cannot convert a symbolic Tensor (lstm_1/strided_slice

我正在运行新的苹果原生tensorflow软件包2.4,遇到了一个以前没有遇到过的问题。这段jupyter笔记本代码在旧的基于intel的环境中工作,该环境使用了旧的tensorflow版本。但与M1 apple MLcomputer TensorFlow2.4不兼容 使用Numpy 1.20或1.18(我将Numpy降级以进行尝试)。错误日志:

NotImplementedError: Cannot convert a symbolic Tensor (lstm_1/strided_slice:0) to a numpy array. This error may indicate that you're trying to pass a Tensor to a NumPy call, which is not supported
    ---------------------------------------------------------------------------
    NotImplementedError                       Traceback (most recent call last)
    <ipython-input-20-73358e637fe3> in <module>
          4 model = Sequential()
          5 model.add(Embedding(vocab_size+1, W2V_SIZE, weights=[embedding_matrix], input_length=MAX_SEQUENCE_LENGTH, trainable=False))
    ----> 6 model.add(LSTM(500, dropout=0.2, recurrent_dropout=0.2))
          7 model.add(Dense(units = 10000, kernel_initializer = 'glorot_uniform', activation = 'relu'))
          8 model.add(Dropout(0.35))
    ~/miniforge3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/training/tracking/base.py in _method_wrapper(self, *args, **kwargs)
        515     self._self_setattr_tracking = False  # pylint: disable=protected-access
        516     try:
    --> 517       result = method(self, *args, **kwargs)
        518     finally:
        519       self._self_setattr_tracking = previous_value  # pylint: disable=protected-access
    ~/miniforge3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/keras/engine/sequential.py in add(self, layer)
        221       # If the model is being built continuously on top of an input layer:
        222       # refresh its output.
    --> 223       output_tensor = layer(self.outputs[0])
        224       if len(nest.flatten(output_tensor)) != 1:
        225         raise ValueError(SINGLE_LAYER_OUTPUT_ERROR_MSG)
    ~/miniforge3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/keras/layers/recurrent.py in __call__(self, inputs, initial_state, constants, **kwargs)
        658 
        659     if initial_state is None and constants is None:
    --> 660       return super(RNN, self).__call__(inputs, **kwargs)
        661 
        662     # If any of `initial_state` or `constants` are specified and are Keras
    ~/miniforge3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py in __call__(self, *args, **kwargs)
        944     # >> model = tf.keras.Model(inputs, outputs)
        945     if _in_functional_construction_mode(self, inputs, args, kwargs, input_list):
    --> 946       return self._functional_construction_call(inputs, args, kwargs,
        947                                                 input_list)
        948 
    ~/miniforge3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py in _functional_construction_call(self, inputs, args, kwargs, input_list)
       1083           layer=self, inputs=inputs, build_graph=True, training=training_value):
       1084         # Check input assumptions set after layer building, e.g. input shape.
    -> 1085         outputs = self._keras_tensor_symbolic_call(
       1086             inputs, input_masks, args, kwargs)
       1087 
    ~/miniforge3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py in _keras_tensor_symbolic_call(self, inputs, input_masks, args, kwargs)
        815       return nest.map_structure(keras_tensor.KerasTensor, output_signature)
        816     else:
    --> 817       return self._infer_output_signature(inputs, args, kwargs, input_masks)
        818 
        819   def _infer_output_signature(self, inputs, args, kwargs, input_masks):
    ~/miniforge3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py in _infer_output_signature(self, inputs, args, kwargs, input_masks)
        856           # TODO(kaftan): do we maybe_build here, or have we already done it?
        857           self._maybe_build(inputs)
    --> 858           outputs = call_fn(inputs, *args, **kwargs)
        859 
        860         self._handle_activity_regularization(inputs, outputs)
    ~/miniforge3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/keras/layers/recurrent_v2.py in call(self, inputs, mask, training, initial_state)
       1161     # LSTM does not support constants. Ignore it during process.
       1162     orig_initial_state = initial_state
    -> 1163     inputs, initial_state, _ = self._process_inputs(inputs, initial_state, None)
       1164 
       1165     if isinstance(mask, list):
    ~/miniforge3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/keras/layers/recurrent.py in _process_inputs(self, inputs, initial_state, constants)
        857         initial_state = self.states
        858     elif initial_state is None:
    --> 859       initial_state = self.get_initial_state(inputs)
        860 
        861     if len(initial_state) != len(self.states):
    ~/miniforge3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/keras/layers/recurrent.py in get_initial_state(self, inputs)
        640     dtype = inputs.dtype
        641     if get_initial_state_fn:
    --> 642       init_state = get_initial_state_fn(
        643           inputs=None, batch_size=batch_size, dtype=dtype)
        644     else:
    ~/miniforge3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/keras/layers/recurrent.py in get_initial_state(self, inputs, batch_size, dtype)
       2504 
       2505   def get_initial_state(self, inputs=None, batch_size=None, dtype=None):
    -> 2506     return list(_generate_zero_filled_state_for_cell(
       2507         self, inputs, batch_size, dtype))
       2508 
    ~/miniforge3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/keras/layers/recurrent.py in _generate_zero_filled_state_for_cell(cell, inputs, batch_size, dtype)
       2985     batch_size = array_ops.shape(inputs)[0]
       2986     dtype = inputs.dtype
    -> 2987   return _generate_zero_filled_state(batch_size, cell.state_size, dtype)
       2988 
       2989 
    ~/miniforge3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/keras/layers/recurrent.py in _generate_zero_filled_state(batch_size_tensor, state_size, dtype)
       3001 
       3002   if nest.is_nested(state_size):
    -> 3003     return nest.map_structure(create_zeros, state_size)
       3004   else:
       3005     return create_zeros(state_size)
    ~/miniforge3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/util/nest.py in map_structure(func, *structure, **kwargs)
        657 
        658   return pack_sequence_as(
    --> 659       structure[0], [func(*x) for x in entries],
        660       expand_composites=expand_composites)
        661 
    ~/miniforge3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/util/nest.py in <listcomp>(.0)
        657 
        658   return pack_sequence_as(
    --> 659       structure[0], [func(*x) for x in entries],
        660       expand_composites=expand_composites)
        661 
    ~/miniforge3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/keras/layers/recurrent.py in create_zeros(unnested_state_size)
       2998     flat_dims = tensor_shape.TensorShape(unnested_state_size).as_list()
       2999     init_state_size = [batch_size_tensor] + flat_dims
    -> 3000     return array_ops.zeros(init_state_size, dtype=dtype)
       3001 
       3002   if nest.is_nested(state_size):
    ~/miniforge3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/util/dispatch.py in wrapper(*args, **kwargs)
        199     """Call target, and fall back on dispatchers if there is a TypeError."""
        200     try:
    --> 201       return target(*args, **kwargs)
        202     except (TypeError, ValueError):
        203       # Note: convert_to_eager_tensor currently raises a ValueError, not a
    ~/miniforge3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/ops/array_ops.py in wrapped(*args, **kwargs)
       2817 
       2818   def wrapped(*args, **kwargs):
    -> 2819     tensor = fun(*args, **kwargs)
       2820     tensor._is_zeros_tensor = True
       2821     return tensor
    ~/miniforge3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/ops/array_ops.py in zeros(shape, dtype, name)
       2866           # Create a constant if it won't be very big. Otherwise create a fill
       2867           # op to prevent serialized GraphDefs from becoming too large.
    -> 2868           output = _constant_if_small(zero, shape, dtype, name)
       2869           if output is not None:
       2870             return output
    ~/miniforge3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/ops/array_ops.py in _constant_if_small(value, shape, dtype, name)
       2802 def _constant_if_small(value, shape, dtype, name):
       2803   try:
    -> 2804     if np.prod(shape) < 1000:
       2805       return constant(value, shape=shape, dtype=dtype, name=name)
       2806   except TypeError:
    <__array_function__ internals> in prod(*args, **kwargs)
    ~/miniforge3/envs/tf2.4/lib/python3.8/site-packages/numpy/core/fromnumeric.py in prod(a, axis, dtype, out, keepdims, initial, where)
       3028     10
       3029     """
    -> 3030     return _wrapreduction(a, np.multiply, 'prod', axis, dtype, out,
       3031                           keepdims=keepdims, initial=initial, where=where)
       3032 
    ~/miniforge3/envs/tf2.4/lib/python3.8/site-packages/numpy/core/fromnumeric.py in _wrapreduction(obj, ufunc, method, axis, dtype, out, **kwargs)
         85                 return reduction(axis=axis, out=out, **passkwargs)
         86 
    ---> 87     return ufunc.reduce(obj, axis, dtype, out, **passkwargs)
         88 
         89 
    ~/miniforge3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/framework/ops.py in __array__(self)
        850 
        851   def __array__(self):
    --> 852     raise NotImplementedError(
        853         "Cannot convert a symbolic Tensor ({}) to a numpy array."
        854         " This error may indicate that you're trying to pass a Tensor to"
    NotImplementedError: Cannot convert a symbolic Tensor (lstm_1/strided_slice:0) to a numpy array. This error may indicate that you're trying to pass a Tensor to a NumPy call, which is not supported
NotImplementedError:无法将符号张量(lstm_1/stripped_切片:0)转换为numpy数组。此错误可能表示您试图将张量传递给NumPy调用,这是不受支持的
---------------------------------------------------------------------------
NotImplementedError回溯(最后一次调用)
在里面
4模型=顺序()
5模型。添加(嵌入(vocab_大小+1,W2V_大小,权重=[嵌入矩阵],输入长度=最大序列长度,可训练长度=假))
---->6模型添加(LSTM(500,辍学率=0.2,经常性辍学率=0.2))
7模型添加(密集(单位=10000,内核初始化器='glorot\u uniform',激活='relu'))
8型号。添加(辍学率(0.35))
~/minifeg3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/training/tracking/base.py in\u method\u wrapper(self,*args,**kwargs)
515 self._self_setattr_tracking=False#pylint:disable=protected access
516试试:
-->517结果=方法(自身、*args、**kwargs)
518最后:
519 self._self_setattr_tracking=上一个值#pylint:disable=受保护访问
添加中的~/minifeg3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/keras/engine/sequential.py(self,layer)
221#如果模型持续构建在输入层之上:
222#刷新其输出。
-->223输出张量=层(自输出[0])
224如果len(嵌套展平(输出张量))!=1:
225提升值错误(单层输出错误消息)
~/minifeg3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/keras/layers/recurrent.py in uuu调用(self、输入、初始状态、常量、**kwargs)
658
659如果初始_状态为无且常数为无:
-->660返回超级(RNN,自我)。\调用(输入,**kwargs)
661
662#如果指定了`初始状态'或`常数'中的任何一个且为Keras
~/minifeg3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/keras/engine/base\u layer.py in\uuuu调用(self,*args,**kwargs)
944#>>model=tf.keras.model(输入、输出)
945如果处于功能构建模式(自身、输入、参数、kwargs、输入列表):
-->946返回自功能构造调用(输入、参数、kwargs、,
947输入(U列表)
948
调用中的~/minifeg3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/keras/engine/base\u layer.py(self、input、args、kwargs、input\u list)
1083层=自身,输入=输入,构建图=真,培训=培训值):
1084#检查层构建后设置的输入假设,例如输入形状。
->1085输出=自。\ keras\张量\符号\调用(
1086输入、输入屏蔽、参数、kwargs)
1087
~/minifeg3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/keras/engine/base\u layer.py in\u keras\u tensor\u symbolic\u调用(self、input、input\u掩码、args、kwargs)
815返回nest.map_结构(keras_tensor.KerasTensor,输出_签名)
816其他:
-->817返回自我。推断输出签名(输入、参数、kwargs、输入掩码)
818
819定义推断输出签名(自身、输入、参数、kwargs、输入掩码):
签名中的~/minifeg3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/keras/engine/base\u layer.py(self、input、args、kwargs、input\u掩码)
托多(卡夫坦):我们是在这里建造,还是已经建造了?
857自组装(输入)
-->858输出=呼叫(输入,*args,**kwargs)
859
860自我处理活动规则化(输入、输出)
调用中的~/minifeg3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/keras/layers/recurrent\u v2.py(self、输入、掩码、训练、初始状态)
1161#LSTM不支持常量。在这个过程中忽略它。
1162原始初始状态=初始状态
->1163输入,初始状态,自处理输入(输入,初始状态,无)
1164
1165如果存在(屏蔽,列表):
进程输入中的~/minifeg3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/keras/layers/recurrent.py(自身、输入、初始状态、常量)
857初始状态=自身状态
858 elif初始_状态为无:
-->859初始状态=自身。获取初始状态(输入)
860
861如果len(初始状态)!=len(自我状态):
~/minifeg3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/keras/layers/recurrent.py处于get_初始_状态(self,输入)
640数据类型=输入。数据类型
641如果获取初始状态:
-->642初始状态=获取初始状态(
643输入=无,批次大小=批次大小,数据类型=数据类型)
644其他:
~/minifeg3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/keras/layers/recurrent.py处于get_initial_状态(self、inputs、batch_size、dtype)
2504
2505 def get_初始_状态(自身,输入=无,批次大小=无,数据类型=无):
->2506返回列表(\u生成\u零\u填充\u状态\u用于\u单元格(
2507自身,输入,批次大小,数据类型)
2508
一般情况下~/minifeg3/envs/tf2.4/lib/python3.8/site-packages/tensorflow/python/keras/layers/recurrent.py