TensorFlow InvalidArgumentError/Value 错误随着代码的微小变化而发生

米奇诺奎特

编码:

import numpy as np
import tensorflow as tf
import pandas as pd
from sklearn.model_selection import train_test_split

x_data = np.linspace(0, 1000000, 1000)
y_true = np.sin(x_data)
y_true += np.random.randn(len(x_data))




feature_columns = [tf.feature_column.numeric_column('x', shape=[1])]
estimator = tf.estimator.DNNRegressor(feature_columns=feature_columns, hidden_units=[10,10,10], optimizer=lambda:
                                  tf.train.AdamOptimizer(
                                      learning_rate=0.1
                                  ))


X_train, X_test, y_train, y_test = train_test_split(x_data, y_true,    test_size=0.3)

input_function = tf.estimator.inputs.numpy_input_fn({'x': X_train},y_train,
                                                batch_size=8,     num_epochs=None,
                                                shuffle=True)

train_input_function = tf.estimator.inputs.numpy_input_fn({'x': X_train},y_train,
                                                      batch_size=8, num_epochs=1000,
                                                      shuffle=False)
test_input_function = tf.estimator.inputs.numpy_input_fn({'x': X_test},y_test,
                                                     batch_size=8, num_epochs=1000,
                                                     shuffle=False)


estimator.train(input_fn=input_function, steps=1000)

train_metrics = estimator.evaluate(input_fn=train_input_function, steps=1000)
test_metrics = estimator.evaluate(input_fn=test_input_function, steps=1000)


print('TRAINING DATA METRICS')
print(train_metrics)
print()

print('TEST DATA METRICS')
print(test_metrics)
print()

效果很好。但是,如果我将 line 更改y_true = np.sin(x_data)y_true=tf.square(x_data),则会出现错误:

回溯(最近一次调用):文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\framework\ops.py”,第 1576 行,在 _create_c_op c_op = c_api.TF_FinishOperation(op_desc) tensorflow.python.framework.errors_impl.InvalidArgumentError: Shape must be rank 1 but is rank 2 for 'strided_slice' (op: 'StridedSlice') 输入形状:[1000], [1,700], [ 1,700],[1]。

在处理上述异常的过程中,又发生了一个异常:

回溯(最近一次调用):文件“C:/Users/Admin/Documents/PycharmProjects/TF_API_2/api.py”,第 21 行,在 X_train, X_test, y_train, y_test = train_test_split(x_data, y_true, test_size=0.3)文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\model_selection_split.py”,第 2059 行,在 train_test_split safe_indexing(a, test)) for a in arrays))文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\model_selection_split.py”,第 2059 行,在 safe_indexing(a, test)) 中,用于数组中的 a)) 文件"C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\utils__init__.py", line 162, in safe_indexing return X[indices] File "C:\Users\Admin\ AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\ops\array_ops。py”,第 524 行,在 _slice_helper 名称=名称中)文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\ops\array_ops.py”,第 690 行,在 strided_sliceshrink_axis_mask=shrink_axis_mask) 文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\ops\gen_array_ops.py”,第 10187 行,在 strided_slice name=名称)文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\framework\op_def_library.py”,第 787 行,在 _apply_op_helper op_def=op_def 中)文件“C :\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\util\deprecation.py", line 454, in new_func return func(*args, **kwargs) File " C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\framework\ops.py”,第 3155 行,在 create_op op_def=op_def 中)文件“C:\Users\Admin\ AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\framework\ops.py”,第 1731 行,在init control_input_ops) 文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\framework\ops.py”,第 1579 行,在 _create_c_op 中引发 ValueError(str(e )) ValueError: Shape must be rank 1 but is rank 2 for 'strided_slice' (op: 'StridedSlice') with input shape: [1000], [1,700], [1,700], [1].

如果我使用 **2 而不是 tf.square,代码也无法编译,错误:ERROR:tensorflow:Model diverged with loss = NaN。回溯(最近一次调用最后一次):

文件“C:/Users/Admin/Documents/PycharmProjects/TF_API_2/api.py”,第 35 行,在 estimator.train(input_fn=input_function, steps=1000) 文件“C:\Users\Admin\AppData\Local\Programs \Python\Python36\lib\site-packages\tensorflow\python\estimator\estimator.py”,第 376 行,在 train loss = self._train_model(input_fn, hooks, Saving_listeners) 文件“C:\Users\Admin\AppData\ Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\estimator\estimator.py”,第 1145 行,在 _train_model 中返​​回 self._train_model_default(input_fn, hooks, Saving_listeners) 文件“C:\Users\Admin\ AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\estimator\estimator.py”,第 1173 行,在 _train_model_default Saving_listeners 中)文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\estimator\estimator.py”,第 1451 行,在 _train_with_estimator_spec _,loss = mon_sess.run([estimator_spec.train_op, estimator_spec.loss]) 文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\training\monitored_session.py”,第 583 行,运行 run_metadata=run_metadata)文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\training\monitored_session.py”,第 1059 行,运行 run_metadata=run_metadata) 文件“C:\ Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\training\monitored_session.py”,第 1150 行,在运行 raise Six.reraise(*original_exc_info) 文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\six.py”,第 693 行,在重新提高值文件“C:\Users\Admin\AppData\Local\Programs\Python\ Python36\lib\site-packages\tensorflow\python\training\monitored_session.py”,第 1135 行,运行中返回 self._sess.run(*args, **kwargs) 文件“C:\Users\Admin\AppData\Local \Programs\Python\Python36\lib\site-packages\tensorflow\python\training\monitored_session.py", line 1215, in run run_metadata=run_metadata)) 文件 "C:\Users\Admin\AppData\Local\Programs\Python \Python36\lib\site-packages\tensorflow\python\training\basic_session_run_hooks.py”,第 635 行,在 after_run 中引发 NanLossDuringTrainingError tensorflow.python.training.basic_session_run_hooks.NanLossDuringTrainingError:训练期间的 NaN 损失。在重新提高值文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\training\monitored_session.py”,第 1135 行,在运行中返回 self._sess。 run(*args, **kwargs) File "C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\training\monitored_session.py", line 1215, in run run_metadata=run_metadata)) 文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\training\basic_session_run_hooks.py”,第 635 行,在 after_run 中引发 NanLossDuringTrainingError tensorflow。 python.training.basic_session_run_hooks.NanLossDuringTrainingError:训练期间的 NaN 损失。在重新提高值文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\training\monitored_session.py”,第 1135 行,在运行中返回 self._sess。 run(*args, **kwargs) File "C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\training\monitored_session.py", line 1215, in run run_metadata=run_metadata)) 文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\training\basic_session_run_hooks.py”,第 635 行,在 after_run 中引发 NanLossDuringTrainingError tensorflow。 python.training.basic_session_run_hooks.NanLossDuringTrainingError:训练期间的 NaN 损失。在运行中返回 self._sess.run(*args, **kwargs) File "C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\training\monitored_session.py ",第 1215 行,运行 run_metadata=run_metadata)) 文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\training\basic_session_run_hooks.py”,第 635 行, 在 after_run 中引发 NanLossDuringTrainingError tensorflow.python.training.basic_session_run_hooks.NanLossDuringTrainingError: NaN loss during training。在运行中返回 self._sess.run(*args, **kwargs) File "C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\training\monitored_session.py ",第 1215 行,运行 run_metadata=run_metadata)) 文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\training\basic_session_run_hooks.py”,第 635 行, 在 after_run 中引发 NanLossDuringTrainingError tensorflow.python.training.basic_session_run_hooks.NanLossDuringTrainingError: NaN loss during training。\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\training\basic_session_run_hooks.py”,第 635 行,在 after_run 中引发 NanLossDuringTrainingError tensorflow.python.training.basic_session_run_hooks.TanLossDuringNanLossDuring训练过程中的损失。\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\training\basic_session_run_hooks.py”,第 635 行,在 after_run 中引发 NanLossDuringTrainingError tensorflow.python.training.basic_session_run_hooks.TanLossDuringNanLossDuring训练过程中的损失。

这一行 [ y_true = tf.square(x_data)]有什么问题

cs95

这里有两个不同的问题:

#1,不要将 numpy 和 tensorflow 操作混合在一起。除非您在急切执行模式下评估您的图形,否则它们几乎永远不会一起使用。

#2,当您的网络在几次迭代后产生 NaN 时,这通常是您遇到数字上溢/下溢的好兆头。在这种情况下,罪魁祸首是x_data输入过大。要么对其进行标准化(0-1),要么减少生成数据的范围(怎么样np.random.randint?)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

安装tensorflow时发生错误

来自分类Dev

导入tensorflow时发生错误

来自分类Dev

Tensorflow MNIST 教程代码错误

来自分类Dev

Tensorflow 代码中的形状错误

来自分类Dev

从源代码安装Tensorflow

来自分类Dev

TensorFlow 卷积代码优化

来自分类Dev

Tensorflow NaN错误?

来自分类Dev

Tensorflow收敛但预测错误

来自分类Dev

TensorFlow:形状错误

来自分类Dev

Keras Tensorflow多个错误

来自分类Dev

错误:Tensorflow CNN尺寸

来自分类Dev

Tensorflow 的 MulticellRNN 错误

来自分类Dev

Tensorflow,运行错误

来自分类Dev

Android 上的 Tensorflow 错误

来自分类Dev

TensorFlow 错误的数组形状

来自分类Dev

Tensorflow 的编译错误

来自分类Dev

RSpec上的更多错误行为预计会随着销毁发生变化

来自分类Dev

Tensorflow - tf.nn.conv2D() 中的权重值是否发生了变化?

来自分类Dev

为什么在 tensorflow 会话中访问 keras 模型参数值会发生变化?

来自分类Dev

TensorFlow 与 C++,代码块

来自分类Dev

Tensorflow-tensorflow_inception_graph.pb的源代码

来自分类Dev

从 tensorflow.examples.learn 模块的源代码安装 Tensorflow

来自分类Dev

Tensorflow条件抛出值错误

来自分类Dev

分布式Tensorflow错误/

来自分类Dev

TensorFlow 2.0 GradientTape NoneType错误

来自分类Dev

TensorFlow:尺寸错误。如何调试?

来自分类Dev

Tensorflow DNNClassifier返回错误的预测

来自分类Dev

Tensorflow Slim和断言错误

来自分类Dev

Tensorflow Visual Studio导入错误