python - Keras LSTM 尝试创建模型架构时出现多个错误

标签 python tensorflow machine-learning keras lstm

这是我今天早些时候发布的重复问题,在另一个问题中我使用的是旧版本的 Keras。我已经升级到 Keras 2.0.0,但仍然遇到很多我自己无法弄清楚的错误,因此我主要逐字重新发布问题。

我试图了解如何使用 keras 进行供应链预测,但我不断收到错误,但在其他地方找不到帮助。我尝试过做类似的教程;太阳黑子预测教程,污染多元教程等,但我仍然不明白 input_shape 参数如何工作或如何组织我的数据以使其被 keras 接受。

我的数据集是一个单一时间序列,描述我们每月销售的产品数量。我采用了 107 个月的单一时间序列,并将其转换为 30 行、77 列的数据集。我从中创建了一个训练集和测试集。

从命令提示符:

Successfully uninstalled Keras-1.2.0
Successfully installed keras-2.0.0

Python Version: 3.5.4

这是我收到的代码和相应的错误。

model = Sequential()
model.add(LSTM(input_shape=(77, 1), output_dim = 10))

回溯

C:\Python35\lib\site-packages\keras\backend\tensorflow_backend.py in concatenate(tensors, axis)
   1219         A tensor.
-> 1220     """
   1221     zero = _to_tensor(0., x.dtype.base_dtype)

AttributeError: module 'tensorflow' has no attribute 'concat_v2'

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call last)
<ipython-input-42-ee393fff874d> in <module>()
      1 model = Sequential()
----> 2 model.add(LSTM(input_shape=(77, 1), output_dim = 10))
      3 #model.add(Dense(10, activation = 'relu'))
      4 #model.add(Dense(1, activation = 'softmax'))

C:\Python35\lib\site-packages\keras\models.py in add(self, layer)
    292                         '`Sequential.from_config(config)`?')
    293     return layer_module.deserialize(config, custom_objects=custom_objects)
--> 294 
    295 
    296 def model_from_yaml(yaml_string, custom_objects=None):

C:\Python35\lib\site-packages\keras\engine\topology.py in create_input_layer(self, batch_input_shape, input_dtype, name)
    396 
    397             # Check ndim.
--> 398             if spec.ndim is not None:
    399                 if K.ndim(x) != spec.ndim:
    400                     raise ValueError('Input ' + str(input_index) +

C:\Python35\lib\site-packages\keras\engine\topology.py in __call__(self, x, mask)
    541             # Handle automatic shape inference (only useful for Theano).
    542             input_shape = _collect_input_shape(inputs)
--> 543 
    544             # Actually call the layer, collecting output(s), mask(s), and shape(s).
    545             output = self.call(inputs, **kwargs)

C:\Python35\lib\site-packages\keras\layers\recurrent.py in build(self, input_shape)
    761             constants.append(dp_mask)
    762         else:
--> 763             constants.append([K.cast_to_floatx(1.) for _ in range(3)])
    764 
    765         if 0 < self.recurrent_dropout < 1:

C:\Python35\lib\site-packages\keras\backend\tensorflow_backend.py in concatenate(tensors, axis)
   1220     """
   1221     zero = _to_tensor(0., x.dtype.base_dtype)
-> 1222     inf = _to_tensor(np.inf, x.dtype.base_dtype)
   1223     x = tf.clip_by_value(x, zero, inf)
   1224     return tf.sqrt(x)

C:\Python35\lib\site-packages\tensorflow\python\ops\array_ops.py in concat(values, axis, name)
   1041       ops.convert_to_tensor(axis,
   1042                             name="concat_dim",
-> 1043                             dtype=dtypes.int32).get_shape(
   1044                             ).assert_is_compatible_with(tensor_shape.scalar())
   1045       return identity(values[0], name=scope)

C:\Python35\lib\site-packages\tensorflow\python\framework\ops.py in convert_to_tensor(value, dtype, name, preferred_dtype)
    674       name=name,
    675       preferred_dtype=preferred_dtype,
--> 676       as_ref=False)
    677 
    678 

C:\Python35\lib\site-packages\tensorflow\python\framework\ops.py in internal_convert_to_tensor(value, dtype, name, as_ref, preferred_dtype)
    739 
    740         if ret is None:
--> 741           ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
    742 
    743         if ret is NotImplemented:

C:\Python35\lib\site-packages\tensorflow\python\framework\constant_op.py in _constant_tensor_conversion_function(v, dtype, name, as_ref)
    111                                          as_ref=False):
    112   _ = as_ref
--> 113   return constant(v, dtype=dtype, name=name)
    114 
    115 

C:\Python35\lib\site-packages\tensorflow\python\framework\constant_op.py in constant(value, dtype, shape, name, verify_shape)
    100   tensor_value = attr_value_pb2.AttrValue()
    101   tensor_value.tensor.CopyFrom(
--> 102       tensor_util.make_tensor_proto(value, dtype=dtype, shape=shape, verify_shape=verify_shape))
    103   dtype_value = attr_value_pb2.AttrValue(type=tensor_value.tensor.dtype)
    104   const_tensor = g.create_op(

C:\Python35\lib\site-packages\tensorflow\python\framework\tensor_util.py in make_tensor_proto(values, dtype, shape, verify_shape)
    372       nparray = np.empty(shape, dtype=np_dt)
    373     else:
--> 374       _AssertCompatible(values, dtype)
    375       nparray = np.array(values, dtype=np_dt)
    376       # check to them.

C:\Python35\lib\site-packages\tensorflow\python\framework\tensor_util.py in _AssertCompatible(values, dtype)
    300     else:
    301       raise TypeError("Expected %s, got %s of type '%s' instead." %
--> 302                       (dtype.name, repr(mismatch), type(mismatch).__name__))
    303 
    304 

TypeError: Expected int32, got <tf.Variable 'lstm_7_W_i:0' shape=(1, 10) dtype=float32_ref> of type 'Variable' instead.

最佳答案

我认为问题出在 TF 版本上。 Keras 和 TF 之间的版本兼容性可能是每个人都遇到过的问题,因为 TF API 在短时间内变化很大。

我认为对于 Keras 2.2.X,您需要 TF 版本 > 1.10.X

尝试更新并查看问题是否得到解决!

关于python - Keras LSTM 尝试创建模型架构时出现多个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54700736/

相关文章:

r - 如何在 R 中为分类变量创建偏相关图?

python - Keras 神经网络为每个输入输出相同的结果

python - 如何在通过 python 请求模块发送请求时选择特定的密码

Python:制表符的空格?

python - 我的 TensorFlow 输入函数出现错误 : "TypeError: List of Tensors when single Tensor expected"

java - 在java中加载DNNClassifier

python - 什么是用于在 Python 中验证文件的好音频库?

python - 如何使用 Python 跳过 Json 文件中的字段

machine-learning - 我的 2048 游戏的 Double DQN 算法永远不会学习

machine-learning - 类别相关性及其影响