Python 不支持无值,Keras LSTM配合
亲爱的各位,我正在使用Keras 2.3.1和Tensorflow 2.0.0运行以下代码:Python 不支持无值,Keras LSTM配合,python,tensorflow,keras,Python,Tensorflow,Keras,亲爱的各位,我正在使用Keras 2.3.1和Tensorflow 2.0.0运行以下代码: def lstm_nn_model( trainings_data: np.array, prediction_data: np.array, target_train: np.array, learning_rate: float = 0.001, lstm_units: int = 100, batch_
def lstm_nn_model(
trainings_data: np.array,
prediction_data: np.array,
target_train: np.array,
learning_rate: float = 0.001,
lstm_units: int = 100,
batch_size: int = 72,
epochs: int = 1000,
seq_len: float = 4):
# LSTM part
lstm_input = Input(batch_shape=trainings_data.shape, dtype='float32',
name='lstm_input')
lstm_out = LSTM(lstm_units, return_sequences=False)(lstm_input)
# Output
output = Dense(1, name='output')(lstm_out)
# compile model
adam_opt = Adam(lr=learning_rate, beta_1=0.9, beta_2=0.999, epsilon=None,
decay=0.0, amsgrad=False)
lstm_model = Model(inputs=lstm_input, outputs=output)
lstm_model.compile(
optimizer=adam_opt, loss='mean_squared_error', metrics=['accuracy']
)
# Train
lstm_model.fit(
x=trainings_data ,
y=target_train,
batch_size=batch_size,
epochs=epochs,
verbose=2
)
return lstm_model.predict(prediction_data)
我的数据没有NaN或Null。你可以下载我使用她的数据。有酸洗过的numpy数组(numpy版本1.17.1)。
事实上,我不知道为什么会发生这种情况,类似的答案也没有帮助。如果您需要帮助重现错误,请告诉我。提前谢谢
完整的错误消息:
ValueError Traceback (most recent call last)
<ipython-input-6-2930b20ab5e4> in <module>()
2 target_train_data = target_train[3:]
3 pred_data = pre_process_lstm_predictors(prediction_data, 3)
----> 4 pred_lstm = lstm_nn_model(train_data, pred_data, target_train_data)
~/Desktop/python_projects/meteoIntelligence-projects/src/dataScience/modellingServices.py in lstm_nn_model(trainings_data, prediction_data, target_train, learning_rate, lstm_units, batch_size, epochs, seq_len)
267 batch_size=batch_size,
268 epochs=epochs,
--> 269 verbose=2
270 )
271 return lstm_model.predict(prediction_data)
~/Desktop/venv/lib/python3.6/site-packages/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, max_queue_size, workers, use_multiprocessing, **kwargs)
1211 else:
1212 fit_inputs = x + y + sample_weights
-> 1213 self._make_train_function()
1214 fit_function = self.train_function
1215
~/Desktop/venv/lib/python3.6/site-packages/keras/engine/training.py in _make_train_function(self)
314 training_updates = self.optimizer.get_updates(
315 params=self._collected_trainable_weights,
--> 316 loss=self.total_loss)
317 updates = self.updates + training_updates
318
~/Desktop/venv/lib/python3.6/site-packages/keras/legacy/interfaces.py in wrapper(*args, **kwargs)
89 warnings.warn('Update your `' + object_name + '` call to the ' +
90 'Keras 2 API: ' + signature, stacklevel=2)
---> 91 return func(*args, **kwargs)
92 wrapper._original_function = func
93 return wrapper
~/Desktop/venv/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py in symbolic_fn_wrapper(*args, **kwargs)
73 if _SYMBOLIC_SCOPE.value:
74 with get_graph().as_default():
---> 75 return func(*args, **kwargs)
76 else:
77 return func(*args, **kwargs)
~/Desktop/venv/lib/python3.6/site-packages/keras/optimizers.py in get_updates(self, loss, params)
541 self.updates.append(K.update(vhat, vhat_t))
542 else:
--> 543 p_t = p - lr_t * m_t / (K.sqrt(v_t) + self.epsilon)
544
545 self.updates.append(K.update(m, m_t))
~/Desktop/venv/lib/python3.6/site-packages/tensorflow_core/python/ops/math_ops.py in binary_op_wrapper(x, y)
901 try:
902 y = ops.convert_to_tensor_v2(
--> 903 y, dtype_hint=x.dtype.base_dtype, name="y")
904 except TypeError:
905 # If the RHS is not a tensor, it might be a tensor aware object
~/Desktop/venv/lib/python3.6/site-packages/tensorflow_core/python/framework/ops.py in convert_to_tensor_v2(value, dtype, dtype_hint, name)
1240 name=name,
1241 preferred_dtype=dtype_hint,
-> 1242 as_ref=False)
1243
1244
~/Desktop/venv/lib/python3.6/site-packages/tensorflow_core/python/framework/ops.py in internal_convert_to_tensor(value, dtype, name, as_ref, preferred_dtype, ctx, accept_composite_tensors)
1294
1295 if ret is None:
-> 1296 ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
1297
1298 if ret is NotImplemented:
~/Desktop/venv/lib/python3.6/site-packages/tensorflow_core/python/framework/constant_op.py in _constant_tensor_conversion_function(v, dtype, name, as_ref)
284 as_ref=False):
285 _ = as_ref
--> 286 return constant(v, dtype=dtype, name=name)
287
288
~/Desktop/venv/lib/python3.6/site-packages/tensorflow_core/python/framework/constant_op.py in constant(value, dtype, shape, name)
225 """
226 return _constant_impl(value, dtype, shape, name, verify_shape=False,
--> 227 allow_broadcast=True)
228
229
~/Desktop/venv/lib/python3.6/site-packages/tensorflow_core/python/framework/constant_op.py in _constant_impl(value, dtype, shape, name, verify_shape, allow_broadcast)
263 tensor_util.make_tensor_proto(
264 value, dtype=dtype, shape=shape, verify_shape=verify_shape,
--> 265 allow_broadcast=allow_broadcast))
266 dtype_value = attr_value_pb2.AttrValue(type=tensor_value.tensor.dtype)
267 const_tensor = g.create_op(
~/Desktop/venv/lib/python3.6/site-packages/tensorflow_core/python/framework/tensor_util.py in make_tensor_proto(values, dtype, shape, verify_shape, allow_broadcast)
435 else:
436 if values is None:
--> 437 raise ValueError("None values not supported.")
438 # if dtype is provided, forces numpy array to be the type
439 # provided if possible.
ValueError回溯(最近一次调用)
在()
2目标列车数据=目标列车[3:]
3预测数据=预测过程预测值(预测数据,3)
---->4 pred_lstm=lstm_nn_模型(列车数据、pred_数据、目标列车数据)
lstm\u nn\u模型中的~/Desktop/python\u projects/meteentelligence projects/src/dataScience/modellingServices.py(训练数据、预测数据、目标训练、学习率、lstm\u单位、批量大小、历次、顺序)
267批次大小=批次大小,
268时代=时代,
-->269详细=2
270 )
271返回lstm_模型。预测(预测数据)
~/Desktop/venv/lib/python3.6/site-packages/keras/engine/training.py in-fit(self、x、y、批大小、历元、冗余、回调、验证拆分、验证数据、洗牌、类权重、样本权重、初始历元、每个历元的步骤、验证步骤、验证频率、最大队列大小、工作人员、使用多处理、**kwargs)
1211其他:
1212拟合输入=x+y+样本权重
->1213自我制造训练功能()
1214配合功能=自我训练功能
1215
~/Desktop/venv/lib/python3.6/site-packages/keras/engine/training.py in\u make\u train\u函数(self)
314培训\u更新=self.optimizer.get\u更新(
315参数=自身收集的可训练重量,
-->316损耗=自身总损耗)
317更新=自我更新+培训更新
318
包装中的~/Desktop/venv/lib/python3.6/site-packages/keras/legacy/interfaces.py(*args,**kwargs)
89 warnings.warn('Update your`'+object\u name+'`调用+
90'Keras 2 API:'+签名,堆栈级别=2)
--->91返回函数(*args,**kwargs)
92包装器._原始函数=func
93返回包装器
符号包装中的~/Desktop/venv/lib/python3.6/site-packages/keras/backend/tensorflow\u backend.py(*args,**kwargs)
73如果符号范围值:
74带有get_graph()。作为_default():
--->75返回函数(*args,**kwargs)
76.其他:
77返回函数(*args,**kwargs)
获取更新中的~/Desktop/venv/lib/python3.6/site-packages/keras/optimizers.py(self、loss、params)
541自我更新。追加(K.更新(vhat,vhat_t))
542其他:
-->543 p_t=p-lr_t*m_t/(K.sqrt(v_t)+self.epsilon)
544
545 self.updates.append(K.update(m,m_t))
二进制包装中的~/Desktop/venv/lib/python3.6/site-packages/tensorflow\u core/python/ops/math\u ops.py(x,y)
901尝试:
902y=ops.convert\u to\u tensor\u v2(
-->903 y,dtype\u hint=x.dtype.base\u dtype,name=“y”)
904除类型错误外:
905#如果RHS不是张量,它可能是张量感知对象
~/Desktop/venv/lib/python3.6/site-packages/tensorflow\u core/python/framework/ops.py in convert\u to\u tensor\u v2(值、数据类型、数据类型提示、名称)
1240 name=名称,
1241首选类型=类型提示,
->1242 as_ref=False)
1243
1244
内部转换为张量中的~/Desktop/venv/lib/python3.6/site-packages/tensorflow\u core/python/framework/ops.py(值、数据类型、名称、as\u ref、首选数据类型、ctx、接受复合张量)
1294
1295如果ret为无:
->1296 ret=conversion\u func(值,dtype=dtype,name=name,as\u ref=as\u ref)
1297
1298如果未实施ret:
~/Desktop/venv/lib/python3.6/site-packages/tensorflow\u core/python/framework/constant\u op.py in\u constant\u tensor\u conversion\u函数(v,dtype,name,as\u ref)
284 as_ref=False):
285=作为参考
-->286返回常量(v,dtype=dtype,name=name)
287
288
~/Desktop/venv/lib/python3.6/site-packages/tensorflow\u core/python/framework/constant\u op.py in常量(值、数据类型、形状、名称)
225 """
226返回\u常量\u impl(值、数据类型、形状、名称、验证\u形状=False,
-->227允许_广播=真)
228
229
~/Desktop/venv/lib/python3.6/site-packages/tensorflow\u core/python/framework/constant\u op.py in\u constant\u impl(值、数据类型、形状、名称、验证形状、允许广播)
263张量使用。生成张量原型(
264值,dtype=dtype,shape=shape,verify\u shape=verify\u shape,
-->265允许广播=允许广播)
266 dtype\u value=attr\u value\u pb2.AttrValue(type=tensor\u value.tensor.dtype)
267常数张量=g.创建(
在make\u tensor\u proto中~/Desktop/venv/lib/python3.6/site-packages/tensorflow\u core/python/framework/tensor\u util.py(值、数据类型、形状、验证形状、允许广播)
435其他:
436如果值为无:
-->437 raise VALUE ERROR(“不支持无值”)
438#如果提供了dtype,则强制numpy数组为该类型
439#如果可能的话提供。
非常简单,您不能在Adam
中设置epsilon=None
。它需要是一个数字(通常是一个小数字>0)。只需使用Adam\u opt=Adam(lr=learning\u rate)
,其余的都是默认值。非常简单,您不能在Adam
中设置epsilon=None
。它需要是一个数字(通常是一个小数字>0)。只需使用adam\u opt=adam(lr=learning\u rate)
,其余的都是默认值