欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

multinet kittibox 代码运行踩坑记录

程序员文章站 2024-03-15 11:48:47
...

写在前边

因为我的环境是tensorflow2.1,所以有不少的错误,再次记录一下。
因为有些错误与我之前运行 kittiseg 代码相同在此可以移步 此处

1. 权重路径错误

multinet kittibox 代码运行踩坑记录
在demo.py文件夹下,创建DATA文件夹,在DATA文件夹里放入vgg16.npy,创建weight文件夹也放入vgg16.npy。

2. AttributeError: ‘module’ object has no attribute ‘Print’

multinet kittibox 代码运行踩坑记录

#import tensorflow as tf
import tensorflow.compat.v1 as tf

3.AttributeError: ‘module’ object has no attribute ‘contrib’multinet kittibox 代码运行踩坑记录

(1) he_init = tf.contrib.layers.variance_scaling_initializer() 这句报错

    #he_init = tf.contrib.layers.variance_scaling_initializer()
    he_init = tf.variance_scaling_initializer()

(2)l2_regularizer = tf.contrib.layers.l2_regularizer(hypes[‘wd’]) 这句报错

 #l2_regularizer = tf.contrib.layers.l2_regularizer(hypes['wd'])
 l2_regularizer = tf.keras.regularizers.l2(hypes['wd']

tf.contrib.layers.l2_regularizer()用
regularizer = tf.keras.regularizers.l2()代替
https://blog.csdn.net/wun123/article/details/108278113参考

4.TypeError: init() got an unexpected keyword argument ‘factor’multinet kittibox 代码运行踩坑记录

    #he_init4 = tf.contrib.layers.variance_scaling_initializer(factor=2.0*sd*sd)
    he_init4 = tf.variance_scaling_initializer(scale=2.0*sd*sd)

这里边是两个函数的参数不一样,在此列举一下:
(1)tf.contrib.layers.variance_scaling_initializer()
https://www.cnblogs.com/xc90/articles/9377578.html 参考

variance_scaling_initializer(
    factor=2.0,
    mode='FAN_IN',
    uniform=False,
    seed=None,
    dtype=tf.float32
)

(2)tf.variance_scaling_initializer()参考https://www.cnblogs.com/jfdwd/p/11184117.html

tf.variance_scaling_initializer()

可简写为tf.VarianceScaling()

参数为(scale=1.0,mode="fan_in",distribution="normal",seed=None,dtype=dtypes.float32)

scale: 缩放尺度(正浮点数)

mode:  "fan_in", "fan_out", "fan_avg"中的一个,用于计算标准差stddev的值。

distribution:分布类型,"normal"或“uniform"中的一个。

当 distribution="normal" 的时候,生成truncated normal   distribution(截断正态分布) 的随机数,其中stddev = sqrt(scale / n) ,n的计算与mode参数有关。

      如果mode = "fan_in", n为输入单元的结点数;         

      如果mode = "fan_out",n为输出单元的结点数;

       如果mode = "fan_avg",n为输入和输出单元结点数的平均值。

当distribution="uniform”的时候 ,生成均匀分布的随机数,假设分布区间为[-limit, limit],则

      limit = sqrt(3 * scale / n)

我改了factor为scale,运行成功了,不过原理不了解,不知道是不是一样的参数,大佬请留言解惑!

5. RuntimeError: tf.placeholder() is not compatible with eager execution.

参考:https://blog.csdn.net/weixin_43763859/article/details/104537392
这是因为在运行**tf.compat.v1.placeholder(dtype, shape = None, name = None)**的时候急切执行了这条语句,但是我们一般都是在一个Session前先去定义placeholder,但是不会去执行,然后再在Sesion上下文管理器中去传入我们的数据,然后执行。
这里给出一个方法(对我有效)

在代码中添加这样一句:

import tensorflow as tf
import numpy as np
tf.compat.v1.disable_eager_execution()
相关标签: tf