当前位置: 首页 > 知识库问答 >
问题:

TensorFlow InvalidArgumentError/值错误发生在代码发生微小更改时

容俊豪
2023-03-14

守则:

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=html" target="_blank">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()

工作非常好。但是如果我将行y_true=np.sin(x_data)更改为y_true=tf.square(x_data),我得到一个错误:

Traceback(最近一次调用最后一次):文件"C:\用户\管理员\AppData\本地\程序\Python\Python36\lib\site-包\tenstorflow\python\框架\ops.py",第1576行,_create_c_opc_op=c_api。TF_FinishOperation(op_desc)tensorflow.python.framework.errors_impl。InvalidArgumentError:Shape必须为秩1,但对于输入形状为[1000],[1,700],[1,700],[1]的strided_slice(op:'StridedSlice'),则为秩2。

在处理上述异常期间,发生了另一个异常:

回溯(最后一次调用):文件“C:/Users/Admin/Documents/PycharmProjects/TF_API_2/API.py”,第21行,在X_-train,X_-test,y_-train,y_-train,y_-test=train_-test_-split(X_-data,y-true,test-size=0.3)文件“C:\Users\Admin\AppData\Local\Programs\Python36\lib\site-packages\sklearn\model\selection\u-selection\u-split.py”,第2059行,在第2059行的“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site packages\sklearn\model\u selection\u split.py”文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site packages\sklearn\model\u selection\u split.py”中,在第162行的安全索引(a,测试)中,在第162行,在安全索引返回X[index]文件“C:\Users\Admin\AppData\Local\Programs\Python36\lib\site packages\tensorflow\Python\ops\array\u ops.py”中,第524行,在文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site packages\tensorflow\Python\ops\array\u ops.py”中,第690行,在“C:\Users\Admin\AppData\Local\Programs\Python36\lib\site packages\tensorflow\Python\ops\gen\u array\u ops.py”文件“C:\Users\Admin\AppData\Local\Programs\Python36\lib\site packages\tensorflow\Python\ops\gen\gen\u array\u ops.py”文件“C:\Users\Admin\AppData\Local\AppData\Programs\Programs\Python\Python36\lib\site packages\tensorflow\Python\framework\,在“C:\Users\Admin\AppData\Local\Programs\Python36\lib\site packages\tensorflow\Python\util\deprecation.py”文件“C:\Users\Admin\AppData\Local\Programs\Python36\lib\site packages\tensorflow\Python\util\deprecation.py”的第454行的新函数返回函数(*args,**kwargs)文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site packages\tensorflow\Python\framework,在创建文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site packages\tensorflow\Python\framework\ops.py”中,第1731行,在初始化控制输入文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site packages\tensorflow\Python\framework\ops.py”中,第1579行,在“创建”中ValueError:对于输入形状为[1000]、[1700]、[1700]、[1]的“跨步切片”(op:“跨步切片”),形状必须为秩1,但为秩2。

如果我使用**2而不是tf.square,代码也无法编译,错误为:error:tensorflow:Model发散,loss=NaN。回溯(最近一次呼叫最后一次):

文件“C:/Users/Admin/Documents/PycharmProjects/TF_API_2/API.py”,第35行,在train loss=self.train(input\fn=input\u函数,steps=1000)文件“C:\Users\Admin\AppData\Local\Programs\Python\Python 36\lib\site packagest\tensorflow\pythor\estimator\estimator.py”,第376行,train loss=self.train.\train模型(input\fn,hooks,saving,saving\u侦听器)文件“C:\Users\Admin\AppData\Local\Programs\Python36\lib\site packages\tensorflow\Python\estimator\estimator.py”,第1145行,在“train\u model”返回self.\u train\u model\u default(input\fn,hooks,saving\u listeners)文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site packagest\tensorflow\Python\Python\pythor\Python\estimator.py”“,第1173行,在“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site packages\tensorflow\Python\estimator\estimator\estimator.py”文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site packages\tensorflow\Python\estimator\estimator.py”中的默认保存监听器)文件中,第1451行,在“estimator\Ustimator\spec\Ustimator\Us”中,loss=mon sess“C:\Users\Admin\AppData\Local\Programs\Python36\lib\site packages\tensorflow\Python\training\monitored\u session.py”,第583行,运行元数据=运行元数据)文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site packages\tensorflow\Python\training\monitored\u session.py”,第1059行,运行元数据=运行元数据)文件”C:\Users\Admin\AppData\Local\Programs\Python36\lib\site packages\tensorflow\Python\training\monitored\u session.py”,第1150行,运行raise six.reraise(*原始exc\u info)文件“C:\Users\Admin\AppData\Local\Programs\Python36\lib\site packages\six.py”,第693行,重新raise raise raise raise value File”C:\Users\Admin\AppData\Local\Programs\Python36\lib\site packages\tensorflow\Python\training\monitored\u session.py”,第1135行,运行返回self.\u sess.run(*args,**kwargs)文件“C:\Users\Admin\AppData\Local\Programs\Python36\lib\site packages\tensorflow\Python\Python\training\monitored\u session.py“,第1215行,在运行元数据=运行元数据)文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\site packages\tensorflow\Python\training\basic\u session\u run\u hooks.py”中,第635行,在运行后引发nanlossduringtraining错误tensorflow.Python.training.basic\u session\u运行hooks.nanlossduringtraining错误:在培训期间丢失。

这一行[y\u true=tf.square(x\u数据)]有什么问题?

共有1个答案

赫连永怡
2023-03-14

这里有两个截然不同的问题:

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

#2,当您的网络在几次迭代后产生NaN时,这通常是一个好迹象,表明您遇到了数字溢出/下限溢位。在这种情况下,罪魁祸首是输入过大的x_data。将其规范化(0-1)或缩小生成数据的范围(np.random.randint怎么样?)。

 类似资料:
  • 我正在为我的公司调查可能的跨平台解决方案,我现在正在尝试代号为One的解决方案。我真的很喜欢它,但今天我创建了一个hello world项目,当我尝试构建服务器时,我得到了一个错误。我还尝试了iOS版本,我得到了同样的错误。下面是我得到的异常: 这是我在build.xmlAndroid设置: 我认为这可能是不相关的,因为它是一个我不关心的构建,并且可能不会被解析,但在我的windows部分buil

  • 将一个旧项目上的Gradle更新为最新版本,我收到以下错误:。gradle\caches\transforms-1\files-1.1\CreditCardEntry-1.4.8.10。aar\453339e1f1fb2382e8ce2362a0acdedd\res\values\values。xml:11:5-54:AAPT:error:内部元素必须是资源引用或为空。 我不明白为什么会出现这个错

  • 我创建了一个类的CGLib动态代理,但是当我试图访问原始类中声明的任何字段时,我获得了java.lang.NoSuchFieldException。我需要获取该字段以更改其值。 顺便说一下,这是代理所基于的类: 多谢了。

  • 我是新来的Laravel我想做的只是如下: 我的表单中有一些字段,如标题、描述。 标题字段在数据库中是唯一的。 这就是我所做的来更新我的价值观。 但这将导致错误(该值已经存在),因为我的标题字段是唯一的。 我只想在标题值更改时更新标题,否则更新相同的值,但更新其他字段。谢谢

  • 原因: Workerman是常驻内存运行的,常驻内存可以避免重复读取磁盘、重复解释编译PHP,以便达到最高性能。所以更改业务代码后需要手动reload或者restart才能生效。 同时workerman提供一个监控文件更新的服务,该服务检测到有文件更新后会自动运行reload,从新载入PHP文件。开发者将其放入到项目中随着项目启动即可。 注意:windows系统不支持reload,无法使用监控服务

  • 我在DigitalOcean上启动了wordpress网站,在这里使用本教程安装了wordpress! 第二天我的wordpress网站关闭了,我得到了下面的错误。 “发生了一个错误。 抱歉,您正在查找的页面当前不可用。请稍后再试。 如果您是此资源的系统管理员,则应查看错误日志以了解详细信息。 忠实于你的,nginx。" 如果我重新启动,它会工作几分钟,并且在我得到相同的错误页面之后。 我寻找可能