week 7 编程作业tensorflow 错误汇总

折腾了一早上,终于可以在jupyternotebook中运行了。感觉错误都被我遇见了

一、多个python解释器的问题

我有两个python 一个是3.7,一个是3.9
在pycharm中使用的是d盘的 3.9
在jupyternotebook中使用的是c盘的3.7

默认安装我是安装在了d盘中
所以导致我安装了tensorflow但在jupyternotebook中确不能用。

需要进入我c盘的pip.exe 输入cmd进入终端
C:\Users\10945\AppData\Roaming\Python\Python37\site-packages\pip>pip install ×××
便可以在特定的python中安装。

二、 版本不兼容问题

见此博客!!

三、【已解决cannot import name ‘OrderedDict‘ from ‘typing‘】


见此博客!!

四、pip 更新问题

见此博客!!

jupyternotebook 打不开问题

错误代码:

Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\Scripts\jupyter-notebook-script.py", line 6, in <module>
    from notebook.notebookapp import main
  File "C:\ProgramData\Anaconda3\lib\site-packages\notebook\notebookapp.py", line 40, in <module>
    from jinja2 import Environment, FileSystemLoader
  File "C:\ProgramData\Anaconda3\lib\site-packages\jinja2\__init__.py", line 33, in <module>
    from jinja2.environment import Environment, Template
  File "C:\ProgramData\Anaconda3\lib\site-packages\jinja2\environment.py", line 15, in <module>
    from jinja2 import nodes
  File "C:\ProgramData\Anaconda3\lib\site-packages\jinja2\nodes.py", line 19, in <module>
    from jinja2.utils import Markup
  File "C:\ProgramData\Anaconda3\lib\site-packages\jinja2\utils.py", line 647, in <module>
    from markupsafe import Markup, escape, soft_unicode
ImportError: cannot import name 'soft_unicode' from 'markupsafe' (C:\ProgramData\Anaconda3\lib\site-packages\markupsafe\__init__.py)

解决:

python -m pip uninstall markupsafe==2.0.1

五、module ‘tensorflow.compat.v1‘ has no attribute ‘contrib‘【TensorFlow 2.x】解决方法

见此博客!!!


def initialize_parameters():
    """
    初始化神经网络的参数,参数的维度如下:
        W1 : [25, 12288]
        b1 : [25, 1]
        W2 : [12, 25]
        b2 : [12, 1]
        W3 : [6, 12]
        b3 : [6, 1]
    
    返回:
        parameters - 包含了W和b的字典
    
    
    """
    
#     tf.compat.v1.set_random_seed(1) #指定随机种子
    initializerw=tf.initializers.GlorotUniform(seed=1)
    initializerb=tf.zeros_initializer()
    W1 = tf.compat.v1.get_variable("W1",[25,12288],initializer=initializerw)
    b1 = tf.compat.v1.get_variable("b1",[25,1],initializer=tf.zeros_initializer())
    W2 = tf.compat.v1.get_variable("W2", [12, 25], initializer = initializerw)
    b2 = tf.compat.v1.get_variable("b2", [12, 1], initializer = tf.zeros_initializer())
    W3 = tf.compat.v1.get_variable("W3", [6, 12], initializer = initializerw)
    b3 = tf.compat.v1.get_variable("b3", [6, 1], initializer = tf.zeros_initializer())
    
    parameters = {"W1": W1,
                  "b1": b1,
                  "W2": W2,
                  "b2": b2,
                  "W3": W3,
                  "b3": b3}
    
    return parameters

tf.compat.v1.reset_default_graph() #用于清除默认图形堆栈并重置全局默认图形。 
parameters = initialize_parameters()
print("W1 = " + str(parameters["W1"]))
print("b1 = " + str(parameters["b1"]))
print("W2 = " + str(parameters["W2"]))
print("b2 = " + str(parameters["b2"]))

六、交叉熵

注意!!!这个函数的返回值并不是一个数,而是一个向量。
如果要求交叉熵,我们要再做一步tf.reduce_sum操作,就是对向量里面所有元素求和,最后才得到。
如果求loss,则要做一步tf.reduce_mean操作,对向量求均值!
def compute_cost(Z3,Y):
    """
    计算成本
    
    参数:
        Z3 - 前向传播的结果
        Y - 标签,一个占位符,和Z3的维度相同
        
    返回:
        cost - 成本值
    
    
    """
    logits = tf.transpose(Z3) #转置
    labels = tf.transpose(Y)  #转置
    
    cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=logits,labels=labels))
    
    return cost

七、最后使用softmax激活函数来求成本

所以向前传播中只用求到Z3,Z3作为成本函数的输入。
并且在向前传播中我们无需保存W,b,Z这些,向后传播和计算成本时会根据向前传播的步骤自动推算出梯度。

你可能感兴趣的:(深度学习吴恩达,tensorflow,python,深度学习)