2022.9代码调试报错汇总

1.ImportError: cannot import name ‘keras_tensor’ from ‘tensorflow.python.keras.engine’ (E:\Anaconda\envs\python37\lib\site-packages\tensorflow_core\python\keras\engine_init_

https://blog.csdn.net/qq_28531269/article/details/121627960

2. tensorflow报错 Blas xGEMV launch failed

详细描述:``

x = tf.constant([[1.,2.],[3.,4.]]) 
y = tf.constant([[1.],[2.]])
w = tf.Variable(initial_value=[[1.],[2.]])
b = tf.Variable(initial_value=1.)
with tf.GradientTape() as tape:
    L = tf.reduce_sum(tf.square(tf.matmul(x,w) + b -y))
w_grad, b_grad = tape.gradient(L,[w,b])`
print(L,w_grad,b_grad)

在执行tf.matmul(x,w)时报错,但是将浮点数改为整型时不会报错
原因在于tf版本与cuda和cudnn版本不对应,无法使用gpu进行计算
Tf与cuda cudnn版本关系链接:https://zhuanlan.zhihu.com/p/434517802

3. VScode编写C++之解决cin输入问题

https://blog.csdn.net/weixin_44915520/article/details/123369846?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-123369846-blog-124802824.pc_relevant_multi_platform_whitelistv3&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-123369846-blog-124802824.pc_relevant_multi_platform_whitelistv3&utm_relevant_index=1

点击左下角设置(或者ctrl+逗号也行),在搜索框输入run in terminal,找到
Code-runner:Run in Terminal, 勾选Whether to run code in integrated Terminal

4.在VSCode中搭建C++编译环境

https://blog.csdn.net/weixin_45695382/article/details/125835139

5.在 C++ 中 main 函数前面为什么要加上数据类型,比如: int void ?

main 函数的返回值是返回给主调进程,使主调进程得知被调用程序的运行结果。
标准规范中规定 main 函数的返回值为 int,一般约定返回 0 值时代表程序运行无错误,其它值均为错误号,但该约定并非强制。
如果程序的运行结果不需要返回给主调进程,或程序开发人员确认该状态并不重要,比如所有出错信息均在程序中有明确提示的情况下,可以不写 main 函数的返回值。在一些检查不是很严格的编译器中,比如 VC, VS 等,void 类型的 main 是允许的。不过在一些检查严格的编译器下,比如 g++, 则要求 main 函数的返回值必须为 int 型。
所以在编程时,区分程序运行结果并以 int 型返回,是一个良好的编程习惯。

6. C 语言 int main() 和 int main(void) 的区别?

int main(void) 指的是此函数的参数为空,不能传入参数,如果你传入参数,就会出错。
int main() 表示可以传入参数。
// 这样是正确的

int main()
{ if (0) main(42);
}
// 这样会出错
int main(void)
{ if (0) main(42);
}

在 C++ 中 int main() 和 int main(void) 是等效的,但在 C 中让括号空着代表编译器对是否接受参数保持沉默。在 C 语言中 main() 省略返回类型也就相当说明返回类型为 int 型,不过这种用法在 C++ 中逐渐被淘汰。虽然 void main()在很多系统都适用,但他毕竟不是标准的,所以应该避免这种用法, 应该使用这种 int main(void) 的写法比较妥当。

7. 为什么要使用 using namespace std;

有些名字容易冲突,所以会使用命名空间的方式进行区分,具体来说就是加个前缀。比如 C++ 标准库里面定义了 vector 容器,你自己也写了个 vector 类,这样名字就冲突了。于是标准库里的名字都加上 std:: 的前缀,你必须用 std::vector 来引用。同理,你自己的类也可以加个自定义的前缀。
但是经常写全名会很繁琐,所以在没有冲突的情况下你可以偷懒,写一句 using namespace std;,接下去的代码就可以不用写前缀直接写 vector 了。

8. 关于 typedef 的几点说明:

  1. typedef 可以声明各种类型名,但不能用来定义变量。用 typedef 可以声明数组类型、字符串类型,使用比较方便。
  2. 用typedef只是对已经存在的类型增加一个类型名,而没有创造新的类型。
  3. 当在不同源文件中用到同一类型数据(尤其是像数组、指针、结构体、共用体等类型数据)时,常用 typedef 声明一些数据类型,把它们单独放在一个头文件中,然后在需要用到它们的文件中用 #include 命令把它们包含进来,以提高编程效率。
  4. 使用 typedef 有利于程序的通用与移植。有时程序会依赖于硬件特性,用 typedef 便于移植。

9. size_t

在 C 语言中就有了,它是一种 整型 类型,里面保存的是一个整数,就像 int, long 那样。这种整数用来记录一个大小(size)。size_t 的全称应该是 size type,就是说 一种用来记录大小的数据类型。
通常我们用 sizeof(XXX) 操作,这个操作所得到的结果就是 size_t 类型。
因为 size_t 类型的数据其实是保存了一个整数,所以它也可以做加减乘除,也可以转化为 int 并赋值给 int 类型的变量。
类似的还有 wchar_t, ptrdiff_t。
wchar_t 就是 wide char type, 一种用来记录一个宽字符的数据类型 。
ptrdiff_t 就是 pointer difference type, 一种用来记录两个指针之间的距离的数据类型 。
通常,size_t 和 ptrdiff_t 都是用 typedef 来实现的。你可能在某个头文件里面找到类似的语句:
typedef unsigned int size_t;
而 wchar_t 则稍有不同。在一些旧的编译器中,wchar_t 也可能是用 typedef 来实现,但是新的标准中 wchar_t 已经是 C/C++ 语言的关键字,wchar_t 类型的地位已经和 char, int 的地位等同了。
在标准 C/C++ 的语法中,只有 int float char bool 等基本的数据类型,至于 size_t, 或 size_type 都是以后的编程人员为了方便记忆所定义的一些便于理解的由基本数据类型的变体类型。
例如:

typedef int size_t; 定义了 size_t 为整型。
int i;                   // 定义一个 int 类型的变量 i
size_t size=sizeof(i);   // 用 sizeof 操作得到变量i的类型的大小
// 这是一个size_t类型的值
// 可以用来对一个size_t类型的变量做初始化
i=(int)size;             // size_t 类型的值可以转化为 int 类型的值
char c='a';              // c 保存了字符 a,占一个字节
wchar_t wc=L'a';         // wc 保存了宽字符 a,占两个字节
// 注意 'a' 表示字符 a,L'a' 表示宽字符 a
int arr[]={1,2,3,4,5};   // 定义一个数组
int *p1=&arr[0];         // 取得数组中元素的地址,赋值给指针
int *p2=&arr[3];
ptrdiff_t diff=p2-p1;    // 指针的减法可以计算两个指针之间相隔的元素个数
// 所得结果是一个 ptrdiff_t 类型
i=(int)diff;             // ptrdiff_t 类型的值可以转化为 int 类型的值

10.volatile修饰符

volatile 告诉编译器不需要优化volatile声明的变量,让程序可以直接从内存中读取变量。对于一般的变量编译器会对变量进行优化,将内存中的变量值放在寄存器中以加快读写效率。
restrict 由 restrict 修饰的指针是唯一一种访问它所指向的对象的方式。只有 C99 增加了新的类型限定符 restrict。

11.import numpy在cmd不报错,但是pycharm报错

报错具体如下:(原版报错忘了复制,找了一个类似的)

**ImportError:
IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!
Importing the numpy C-extensions failed. This error can happen for
many reasons, often due to issues with your setup or how NumPy was
installed.
We have compiled some common reasons and troubleshooting tips at:
https://numpy.org/devdocs/user/troubleshooting-importerror.html
Please note and check the following:

  • The Python version is: Python3.7 from “F:\Anaconda3\envs\tensorflow2\python.exe”
  • The NumPy version is: “1.19.4”
    and make sure that they are the versions you expect.
    Please carefully study the documentation linked above for further help.
    Original error was: DLL load failed: 找不到指定的模块。**

解决方法:

1.https://youtrack.jetbrains.com/issue/PY-27234

2.https://blog.csdn.net/qq_28714865/article/details/99111240?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.not_use_machine_learn_pai&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.not_use_machine_learn_pai

3.重启pycharm

4.关机重启pycharm(最后这个成功了)

### 回答1: Java中的System.out.println报错可能有多种原因,常见的包括: 1. 拼写错误:System.out.println拼写错误,应该是小写的system.out.println。 2. 缺少分号:在语句末尾缺少分号,导致编译器无法识别。 3. 参数错误:System.out.println方法需要传入参数,如果没有传入参数或者参数类型不正确,就会报错。 4. 作用域错误:System.out.println方法需要在正确的作用域内调用,如果在错误的作用域内调用,就会报错。 5. 导入错误:如果没有正确导入java.io包,就无法使用System.out.println方法,会报错。 以上是常见的System.out.println报错原因,具体原因需要根据具体情况进行分析和排查。 ### 回答2: Java中的System.out.println是用于将文本输出到控制台的常用方法。如果在使用过程中出现错误,可能有以下几种情况: 1. 语法错误。在使用System.out.println时,需要注意语法格式,语法错误可能导致编译无法通过。例如,在使用时忘记了分号或是拼写错误等。 2. 变量类型错误。如果要输出的是变量值,需要确保变量类型与输出格式相匹配。例如,如果输出一个整数,需要使用%d而不是%s。 3. 缺少类的导入。如果在代码中使用System.out.println而没有正确导入包,将会出现编译错误。需要在代码开头添加正确的包导入语句。 4. 输入输出异常。在使用System.out.println时如果出现输入或输出异常,可能会导致运行时错误。这种情况需要检查是否有其他程序正在使用控制台或者是否有权限访问控制台等。 5. 操作系统问题。有些操作系统可能会限制用户对控制台的访问,这些限制可能会导致System.out.println报错。在这种情况下,可能需要对操作系统进行修复或者升级。 总之,当System.out.println报错时,需要从多个方面进行检查,找到错误的根本原因并进行相应的处理。 ### 回答3: Java的 System.out.println() 它是用于打印输出到控制台的方法,如果它出现了错误,可能是以下几个原因之一: 1.拼写错误 检查语法,确保您正确拼写了 System.out.println()。 2.参数问题 检查您是否在括号内提供了正确的参数。也许您忘记了添加String类型的引号。 3.语法错误 检查您的代码中是否有未关闭的语句或括号。 4.变量问题 请确保使用的变量已初始化并且内容正确。 5.包错误 可能您忘记了引入必要的包,如java.lang。 6.编码问题 如果您的代码中包含中文字符或其他非英文字符,可能会导致编码错误。请尝试更改编码格式。 最好的解决方法是仔细检查您的代码,找到所引起错误的位置。如果您无法找到错误,您可以将代码与其他程序员或开发者进行共享,以帮助您找到问题的来源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值