我正在关注simple audio recognition上的教程,目前正在编辑label_wav.py。在原始情况下,我们输入wave文件,然后图形预测标签(在它们之间计算频谱,即图形内部的mfcc)。现在,我希望直接输入mfcc而不是输入wave文件。通过输入mfcc张量Run the graph。
SET @fullpath = @path + @navn
SET @sql = 'DECLARE @pdf VARBINARY(MAX) SELECT @pdf = BulkColumn
FROM OPENROWSET(BULK ''' + @fullpath + ''' , SINGLE_BLOB) AS Document;'
--print @sql
--SELECT @pdf, DATALENGTH(@pdf)
--INSERT INTO pdftest VALUES(@navn, @pdf)
EXEC sp_executesql @sql, N'@fil varbinary(max) out', @fil out
经过一番谷歌搜索,我发现了some discussion in git并创建了一个session_handle。
# mfccs: Tensor("strided_slice:0", shape=(1, 98, 40), dtype=float32)
mfcc_input_layer_name = 'Reshape:0'
with tf.Session() as sess:
predictions, = sess.run(softmax_tensor, {mfcc_input_layer_name: mfcc})
代码按预期工作,但是我想知道是否有更好的方法来处理张量而不是创建句柄然后传递它?
答案 0 :(得分:0)
我想您想用feed_dict用值替换中间张量。如果您有Tensor对象,则可以将其替换为feed_dict,如下所示:
a = tf.constant(3, name="a")
b = tf.constant(4, name="b")
c = tf.add(a, b, name="c")
d = c * 3
with tf.Session() as sess:
print(sess.run(d))
print(sess.run(d, feed_dict={c: 2}))
即使没有Tensor对象,也可以通过get_tensor_by_name
来获取它a = tf.constant(3, name="a")
b = tf.constant(4, name="b")
c = tf.add(a, b, name="c")
d = c * 3
with tf.Session() as sess:
c_tensor = tf.get_default_graph().get_tensor_by_name("c:0")
print(sess.run(d, feed_dict={c_tensor: 2}))