又麻了,搭建环境花了半天。因为兼容问题Tensorflow版本和其他库版本的要求非常复杂。推荐用anaconda和pycharm。anaconda很容易创建各个版本的python的环境。
anaconda安装教程:
Anaconda安装(过程详细)_基QI学习的博客-CSDN博客_anaconda安装
pycharm安装教程:
Download PyCharm: Python IDE for Professional Developers by JetBrains
下载右边那个Community版免费的
搭建Tensorflowpython环境搭建
打开Anaconda Prompt,是个命令行窗口。
输入 conda create -n tensorflow python=3.6.2
回车来创建一个3.6.2版本的python环境
等他询问是否继续,输入y,回车
创建完成后,输入conda activate tensorflow 回车激活环境
再输入 conda install -c hesi_m tensorflow 安装Tensorflow1.11.0版本
因为作业用的是tensorflow版本1运算比较小没必要用GPU,GPU问题还多
等待完成
输入pip install matplotlib==2.2.2,因为Tensorflow版本比较老这些库也要用老版,不然会报错。如果提示已经有matplotlib,就输入 conda uninstall matplotlib 先删除再安装
输入 conda uninstall numpy
输入 pip install numpy==1.13.3
pycharm设置:
打开pycharm,选择新建项目
位置:作业的路径
选择先前配置的解释器,然后点省略号。
选择conda环境,然后找到conda安装路径下的python.exe,设为解释器路径,确定
回到项目窗口下拉选择tensorflow版本
创建就行,在pycharm里打开要编写的py文件
至此,环境创建完成。
下面是tensorflow的基本 *** 作,先导包和忽略tf警告:
import os
import numpy as np
import h5py
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow.python.framework import ops
import tf_utils
import time
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # 忽略警告
np.random.seed(1)
布置简单运算:
def test():
y_hat = tf.constant(36, name="y_hat") # 声明一个常量
y = tf.constant(39, name="y") # 声明一个常量
'''tf.constant(value,type = None,shape = None,name = "Const",verify_shape = False)
1、第一个参数value是必需的,该参数可以的是数值,也可以是列表。
2、第二个参数是数据类型,其一般可以是tf.float32, tf.float64,int32等。
3、第三个参数是形状
4、第四个参数用于定义名称
5、第五个参数verify_shape默认为False,如果修改为True的话表示检查value的形状与shape是否相
符,如果不符会报错。'''
loss = tf.Variable((y - y_hat) ** 2, name="loss")
''' 在TensorFlow中,变量(Variable)是特殊的张量(Tensor),它的值可以是一个任何类型和形状的
张量。
与其他张量不同,变量存在于单个 session.run 调用的上下文之外,也就是说,变量存储的是持久张
量,当训练模型时,用变量来存储和更新参数。除此之外,在调用op之前,所有变量都应被显式地初始化过。
'''
init = tf.global_variables_initializer()
'''含有tf.Variable的环境下,因为tf中建立的变量是没有初始化的也就是在debug时还不是一个
tensor量,而是一个Variable变量类型'''
with tf.Session() as session:
session.run(init)
print(session.run(loss))
test()
def linear_f():
"""y=wx+b"""
w = np.random.randn(4, 3)
x = np.random.randn(3, 1)
b = np.random.randn(4, 1)
y = tf.matmul(w, x) + b
'''tf.matmul等价于np.dot'''
sess = tf.Session() # 等价于with tf.Session as session:
result = sess.run(y) # 运行计算图
sess.close() # 关闭sess
return result
print(linear_f())
使用自带的sigmoid
def sigmoid():
z = np.random.randn(4, 1)
x = tf.placeholder(tf.float32, name='x') # 创建一个占位符,通过feed_dict来传递参数
y = tf.sigmoid(x) # 计算sigmoid
with tf.Session() as session:
result = session.run(y, feed_dict={x: z})
return result
print(sigmoid())
独热编码:
def one_hot():
"""
之前我们进行的都是二分类问题,这次课程介绍了softmax算法是多个分类的问题。
softmax计算的是到各个分类的概率,用12345作为结果肯定不合适。
独热编码就是将n种分类结果扩充为n*例子数的矩阵,第i个例子种类为k:y[k][i-1]=1该列其他行置0
one_hot(indices, depth, on_value=None, off_value=None, axis=None, type=None, name=None)
indices表示输入矩阵;depth表示输出的尺寸(种类数)。
"""
labels = np.array([1, 2, 3, 0, 2, 1])
one_hot_matrix=tf.one_hot(labels,4,axis=0)
with tf.Session() as session:
result=session.run(one_hot_matrix)
session.close()
return result
print(one_hot())
全0,1矩阵初始化
def init():
shape=(5,5)
ones=tf.ones(shape)
zeros=tf.zeros(shape)
with tf.Session() as session:
res1=session.run(ones)
res0=session.run(zeros)
session.close()
return res0,res1
print(init())
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)