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

AttributeError: 'module' object has no attribute 'truncated_normal'

程序员文章站 2022-03-26 23:20:23
...

一:AttributeError: ‘module’ object has no attribute ‘truncated_normal’

tensorflow2.0中修改了这个函数名,因此会报错。

正态分布这个函数truncated_normal()在C:\ProgramData\Anaconda3\envs\tensorflow\Lib\site-packages\tensorflow_core\python\ops\random_ops.py

打开这个文件后查看源代码,看到下面代码:函数废弃了!!!

@tf_export("random.truncated_normal",
           v1=["random.truncated_normal", "truncated_normal"])
@deprecation.deprecated_endpoints("truncated_normal")
def truncated_normal(shape,
                     mean=0.0,
                     stddev=1.0,
                     dtype=dtypes.float32,
                     seed=None,
                     name=None):

在TensorFlow2.0官方文档中找到解决方案,地址如下:点击查看官方文档
https://www.tensorflow.org/api_docs/python/tf/random/truncated_normal

解决方案

将tf.truncated_normal([image_size * image_size, num_labels]))修改为:

tf.compat.v1.random.truncated_normal([image_size * image_size, num_labels]))

不再报错!!!

二:module ‘tensorflow_core._api.v2.train’ has no attribute ‘gradientdescentoptimizer’

在TensorFlow2.0,Keras 嵌入到TensorFlow中,变成默认的API,函数调用也发生了变化~!

In TensorFlow 2.0, Keras became the default high-level API, and optimizer functions migrated from tf.keras.optimizers into separate API called tf.optimizers. They inherit from Keras class Optimizer. Relevant functions from tf.train aren’t included into TF 2.0. So to access GradientDescentOptimizer, call tf.optimizers.SGD。。

在TensorFlow2.0官方文档中找到解决方案,地址如下:点击查看官方文档
https://www.tensorflow.org/api_docs/python/tf/keras/optimizers/SGD

解决方案:

将optimizer = tf.train.GradientDescentOptimizer(0.5).minimize(loss)修改为:

optimizer = tf.optimizers.SGD(learning_rate=0.5, momentum=0.0, nesterov=False, name='SGD')

不再报错!!!