在TensorFlow的世界里,变量的定义和初始化是分开的,一开始,tf.Variable 得到的是张量,而张量并不是具体的值,而是计算过程。
因为tf.Variable 生成的是一个张量,那么 name 就是一个张量的名字,如果你不主动声明的话,就是默认的 Variable
而如果你要得到,变量的值的话,那么你就需要对张量进行计算,首先对变量进行初始化,使用会话进行计算。
sess.run(tf.global_variables_initializer())
对变量初始化之后,就可以直接计算变量,那么run 变量,那么就得到了变量的值。
#简单的随机生成值demo
import tensorflow as tf
s = tf.random_uniform([1, 2],1,2)
# random_uniform(shape,min,max,dtype,seed)
with tf.Session() as sess:
for i in range(100):
print(sess.run(s))
print(i)
import tensorflow as tf
# 创建一个 常量 op, 返回值 'matrix1' 代表这个 1x2 矩阵.
matrix1 = tf.constant([[3., 3.]])
# 创建另外一个 常量 op, 返回值 'matrix2' 代表这个 2x1 矩阵.
matrix2 = tf.constant([[2.], [2.]])
# 创建一个矩阵乘法 matmul op , 把 'matrix1' 和 'matrix2' 作为输入.
# 返回值 'product' 代表矩阵乘法的结果.
product = tf.matmul(matrix1, matrix2)
with tf.Session() as sess:
print(sess.run(matrix1))
print(sess.run(matrix2))
print(sess.run(product))
from keras.model import Sequential
from keras.layers import Dense, Activation,Conv2D,MaxPooling2D,Flatten,Dropout
model = Sequential()
# 卷积层
model.add(Conv2D(64, (3, 3), activation='relu'))
# 最大池化层
model.add(MaxPooling2D(pool_size = (2,2)))
# 全连接层
model.add(Dense(256, activation = 'relu'))
# dropout
model.add(Dropout(0.5))
# 展平层
model.add(Flatten())
#使用compile配置学习流程
model.compile(optimizer='adam', loss='mse')
np.asarray
import numpy as np
a = [0, 1, 2, 3]
print(a)
a = np.asarray(a)
print(a)
if (a[[0, 1]] > 1).any():
print('第一步成功')
if (a[[0, 2]] > 1).any():
print('第二步成功')
输出
[0, 1, 2, 3]
[0 1 2 3]
第二步成功
tensorflow中创建变量的方式有两种,tf.get_variable()和tf.Variable()
tf.get_variable是创建新tensorflow变量
常用的参数有:名称name,变量规格shape,变量类型dtype,变量初始化方式initializer,所属于的集合collections。
def get_variable(name,
shape=None,
dtype=None,
initializer=None,
regularizer=None,
trainable=True,
collections=None,
caching_device=None,
partitioner=None,
validate_shape=True,
use_resource=None,
custom_getter=None):
常用的initializer有:常量初始化器tf.constant_initializer、正态分布初始化器tf.random_normal_initializer、截断正态分布初始化器tf.truncated_normal_
tf.variable_scope用于定义创建变量(层)的操作的上下文管理器。
# 元素差的平方
# 记得要进行初始化
import tensorflow as tf
x = [1,2]
x= tf.Variable(x,dtype=tf.float32)
y = [6,6]
y= tf.Variable(y,dtype=tf.float32)
z= tf.squared_difference(x,y)
ini = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(ini)
print(sess.run(z))