![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
tensorflow
正在吃饭的派大星
这个作者很懒,什么都没留下…
展开
-
使用tensorflow一年多的感想
使用tensorflow一年多的吐槽对比pytorch,tf是真的恶心!!!!!torch的代码,基本上在跑的时候按照官网指示安装一下即可,而tf的代码,搭建环境就超级要命,尤其是ubuntu下,有时候就算把对应好的cuda cudnn安装好了都不行,每次因为这个环境要花费超级多的时间!!!更不用说tf1和tf2的API不兼容问题,初学的时候感觉就是两种语言,极其不方便!!!以后除非必须,我绝对不会再碰一下tf,也劝各位初学者早日转坑(PS:目前github上大部分代码都是用torch来写的了,估计原创 2022-02-04 22:23:16 · 1574 阅读 · 0 评论 -
ValueError: object __array__ method not producing an array解决
今天在调试之前跑过的一个代码,结果发现报错:ValueError: object array method not producing an array关键是这个代码之前已经可以运行,环境我基本上没改,就一直报这个错误。我仔细检查了一下报错内容,发现是numpy的数组转向tensorflow的tensor时报错,感觉是numpy版本的问题,但是检查了一下版本和之前没有变化。我卸载了numpy之后发现,环境中原来有两个版本的numpy,有一个版本的numpy是之前要删除但是残余的,于是将两个都删除之后原创 2021-09-23 19:37:20 · 1322 阅读 · 1 评论 -
tf1报错 The value of a feed cannot be a tf.Tensor object
今天用tf1复现论文时,发现一个错误,那就是session在run的时候,需要feed一些数据,这里的数据要求不能是tensor,因为tensor也只是图中的结构,并没有存放真正的数据正确的数据可以是字符串,数组等具有真实数据的结构。这其实修改一些代码即可。例如原来feed_dict(data:d,x:x}中data是一个tensor。那么在这句代码前加上data=sess.run(data),这时候data拥有了具体数据,就可以传递了。...原创 2021-09-05 15:41:34 · 165 阅读 · 0 评论 -
tf.saved_model加载模型出现options报错
在使用tf.saved_model保存模型之后,load加载模型使用时,发现如下错误:仔细观察错误情况,发现是输入参数不匹配的原因。这里需要注意一下,tf.saved_model保存模型时,函数的输入名称需要和加载时函数输入名称相同,我发现模型函数是: def call(self, inputs, **kwargs):而加载后我是这样调用的:fake_logits = discriminator(input=samples,training=False)这时候应该发现了 input和in原创 2021-08-26 11:00:47 · 577 阅读 · 0 评论 -
tf2梯度计算为None的情况
今天搭建用tf2搭建WGAN网络,自己来写梯度函数,在使用tf.GradientTape()来求梯度时,发现求出结果为None。一般来说结果为None,表示输入变量之间没有构成可求导的关系,同时也需要理解tf.GradientTape()求导的原理,是根据输入的target和source构建好的图进行求导,其中的变量可以视为节点,如果节点间没有连接,求导便会停止,返回None。我检查代码后发现,在用CNN搭建判别器的时候,有这么一行代码:for input in inputs.numpy(): ..原创 2021-08-26 10:47:34 · 1187 阅读 · 0 评论 -
tf.saved_model报错iterating over `tf.Tensor` is not allowed in Graph execution.
今天又是在保存模型时报错,结合最近的错误,我发现在梯度计算过程中是没有问题的,但是在保存模型时就会因为模型中不符合tf2要求的地方报错。这次的错误是iterating over tf.Tensor is not allowed in Graph execution.非常容易理解,就是迭代了一个tensor,我查看代码发现确实这样:#输入的inputs是一个tensor类型变量for input in inputs: .... ....我之所以这么做,是因为当时我搭建的是一个CNN网络,每次只原创 2021-08-26 10:41:50 · 3010 阅读 · 1 评论 -
Failed to get convolution algorithm. This is probably because cuDNN failed to initialize解决
tf2 调用tf.keras.layers.Conv2D函数时报错,检查了一下参数,shape和type都没问题,看了一下报错说是cuDNN不能初始化,先开始觉得是cuDNN版本是不是不匹配了,但是检查了一下发现没问题。之后发现是输入的数据太大,导致显存不足。在代码前加上:#用于显存修改config = tf.compat.v1.ConfigProto(allow_soft_placement=True)config.gpu_options.per_process_gpu_memory_frac原创 2021-08-25 20:54:17 · 164 阅读 · 0 评论 -
tf.saved_model.save报错解决
前几天写了一篇同样关于 tf.saved_model.save报错的解决文章,不过这次的错误不太一样。上一篇文章:savemodel报错值得注意的是:我使用的模型是自定义模型,而不是使用keras.model中的Sequential()封装的函数,所以不能使用model.save(‘xxx.h5’)对模型进行保存,只能通过tf.saved_model或者是save_weights来保存。这次我同样是搭建GAN网络来破解口令,不同的是生成器方面,不再使用卷积核激活,而是使用LSTM网络代替,训练后保原创 2021-08-25 12:37:33 · 1616 阅读 · 1 评论 -
tensorflow2自定义模型保存的坑(tf.saved_model.save以及自定义GAN)
今天自己用tf2搭建框架完成PassGAN网络,终于把模型和训练算法都完成了,效果也不错的时候,突然发现使用tf.saved_model.save保存模型会报错,而且错误很离谱,基本上无法debug的那种,令人十分头疼。首先介绍一下代码的大致结构,GAN网络中生成器和判别器都是自己定义的,并且使用到了自定义的layer:训练时可以使用tf.train.Checkpoint的保存方法,即使中断训练,可以重新加载后继续训练。但是这个方法不太方便,需要对源代码有了解,因此就可以使用tf.saved_mode原创 2021-08-23 21:38:08 · 3809 阅读 · 5 评论