tf.constant
tf.constant()
返回的 tensor
是一个常量,因为这个 tensor
的值不会变
tf.placeholder 和 feed_dict
tf.placeholder
用于将普通类型,转化为 tensor
类型feed_dict
表示投喂字典,格式为 {tensor_type: value}
,其中 tensor_type
表示 tensor
类型,value
表示对应的值,用于具体的计算
softmax_data = [0.7, 0.2, 0.1]
one_hot_data = [1.0, 0.0, 0.0]
# 将 float 类型转化为 tensor 类型
softmax = tf.placeholder(tf.float32)
one_hot = tf.placeholder(tf.float32)
# TODO: Print cross entropy from session
# 传给 tf.multiply 的参数是两个 tensor 类型,而不是具体的值,
# 具体的值在 sess.run() 时,在 feed_dict 中提供
cross_entropy = -tf.reduce_sum(tf.multiply(one_hot, tf.log(softmax)))
with tf.Session() as sess:
# cross_entropy 需要两个类型的数据,在 feed_dict 中提供了
print(sess.run(cross_entropy, feed_dict={softmax: softmax_data, one_hot: one_hot_data}))
按:tf
是一个
类型转换器(tf.placeholder()
),
函数提供器(tf.reduce_sum
,tf.multiply
,tf.log
),
线程提供器(tf.Session
)
tf.Variable
tf.Variable
用于创建一个可变 tensor
,初始值可以被改变。该 tensor
把它的状态存在可变 tensor
里,使用 tf.global_variables_initializer()
来初始化。
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
用 tf.Variable
类可以让我们改变权重和偏差,但还是需要选择一个初始值。从正态分布中取随机数来初始化权重是个好习惯。
weights = tf.Variables(tf.truncated_normal((n_features, n_labels)))
将偏差简单得设为 0,或者用随机数
bias = tf.Variable(tf.zeros(n_labels))
# 或者
bias =tf.Variable(tf.random_normal([n_class]))
按:对于分类问题,从训练样本(X, y)
到 权重参数(W, b)
之间的映射关系如下:
X 的特征数为 n_features = X.shape[1]
,y 的取值空间为 n_labels = y.unique()
,则
weights.shape == [n_features, y.unique()];
bias.shape == (y_unique(), )
来源:CSDN
作者:Linky1990
链接:https://blog.csdn.net/liangjiu2009/article/details/103421898