我正在使用TensorFlow v:1.1,我想使用tf.contrib.seq2seq api 实现序列模型.但是我很难理解如何使用提供的所有函数(BasicDecoder,Dynamic_decode,Helper,Training Helper ...)来构建我的模型.
这是我的设置:我想将一系列特征向量"(翻译"):( batch_size,encoder_max_seq_len,feature_dim)转换为不同长度的序列(batch_size,decoder_max_len,1).
我已经有一个带有LSTM单元的RNN 编码器,我得到了它想要作为初始输入提供给解码器的最终状态.我已经有了解码器的单元,MultiRNNCell LSM.你能帮助我使用tf.contrib.seq2seq2和dynamic_decode 的功能构建最后一部分(会非常感谢示例代码或解释)吗?
这是我的代码:
import tensorflow as tf
from tensorflow.contrib import seq2seq
from tensorflow.contrib import rnn
import math
from data import gen_sum_2b2
class Seq2SeqModel:
def __init__(self,
in_size,
out_size,
embed_size,
n_symbols,
cell_type,
n_units,
n_layers):
self.in_size = in_size
self.out_size = out_size
self.embed_size = embed_size
self.n_symbols = n_symbols
self.cell_type = cell_type
self.n_units = n_units
self.n_layers = n_layers
self.build_graph() …Run Code Online (Sandbox Code Playgroud) 我的问题是如何从多个(或分片)tfrecords获得批量输入.我已经阅读了示例https://github.com/tensorflow/models/blob/master/inception/inception/image_processing.py#L410.基本的管道,把培训作为集为例,(1)首先产生一系列tfrecords(例如,train-000-of-005,train-001-of-005,...),(2)从这些文件名,生成一个列表并将其塞进了tf.train.string_input_producer获得队列,(3)同时生成一个tf.RandomShuffleQueue做其他的东西,(4)tf.train.batch_join用来生成批量输入.
我认为这很复杂,我不确定这个程序的逻辑.在我的情况下,我有一个.npy文件列表,我想生成分片的tfrecords(多个分离的tfrecords,而不只是一个单个大文件).这些.npy文件中的每一个都包含不同数量的正样本和负样本(2个类).一种基本方法是生成一个单个大型tfrecord文件.但文件太大(~20Gb).所以我采用分片的tfrecords.有没有更简单的方法来做到这一点?谢谢.
我正在使用 OpenAI 的新 Whisper 模型进行 STT,RuntimeError: "slow_conv2d_cpu" not implemented for 'Half'当我尝试运行它时,我得到了结果。
没有把握
这是完整的错误:
Traceback (most recent call last):
File "/Users/reallymemorable/git/fp-stt/2-stt.py", line 20, in <module>
result = whisper.decode(model, mel, options)
File "/opt/homebrew/lib/python3.10/site-packages/torch/autograd/grad_mode.py", line 27, in decorate_context
return func(*args, **kwargs)
File "/opt/homebrew/lib/python3.10/site-packages/whisper/decoding.py", line 705, in decode
result = DecodingTask(model, options).run(mel)
File "/opt/homebrew/lib/python3.10/site-packages/torch/autograd/grad_mode.py", line 27, in decorate_context
return func(*args, **kwargs)
File "/opt/homebrew/lib/python3.10/site-packages/whisper/decoding.py", line 621, in run
audio_features: Tensor = self._get_audio_features(mel) # encoder forward pass
File "/opt/homebrew/lib/python3.10/site-packages/whisper/decoding.py", line 565, in _get_audio_features
audio_features …Run Code Online (Sandbox Code Playgroud) 我有一个由多个子网组成的网络(多个卷积网络,最后是一个完全连接的+ soft max层)。每个ConvNet feed都具有特定的图像区域和大小。因此,要馈送我的网络,我为每个convnet输入写一个图像占位符,并为一个批次馈送所有图像的标签写一个占位符(所有convnet输入中的所有输入图像都具有相同的标签)。不幸的是,我对feed_dict部分一无所知。例如,此代码仅适用于一次convnet培训:
images_r, labels_r = sess.run([images, labels])
train_feed = {images_placeholder: images_r,
labels_placeholder: labels_r}
_, loss_value = sess.run([train_op, loss_func], feed_dict=train_feed)
Run Code Online (Sandbox Code Playgroud)
如何扩展上面的代码来提供所有的转换网络?
有没有办法在批次中修改我的图像的组成?目前,当我创建一个大小为4的批处理时,我的批次将如下所示:
Batch1:[Img0 Img1 Img2 Img3]
Batch2:[Img4 Img5 Img6 Img7]
我需要修改我的批次的组成,以便它只会移动一次到下一个图像.那应该是这样的:
Batch1:[Img0 Img1 Img2 Img3]
Batch2:[Img1 Img2 Img3 Img4]
Batch3:[Img2 Img3 Img4 Img5]
Batch4:[Img3 Img4 Img5 Img6]
Batch5:[Img4 Img5 Img6 Img7]
我在我的代码中使用了Tensorflow的Dataset API,如下所示:
def tfrecords_train_input(input_dir, examples, epochs, nsensors, past, future,
features, batch_size, threads, shuffle, record_type):
filenames = sorted(
[os.path.join(input_dir, f) for f in os.listdir(input_dir)])
num_records = 0
for fn in filenames:
for _ in tf.python_io.tf_record_iterator(fn):
num_records += 1
print("Number of files to use:", len(filenames), …Run Code Online (Sandbox Code Playgroud) 我有很多 CSV 文件,每条记录包含约 6000 列。第一列是标签,其余列应视为特征向量。我是 Tensorflow 新手,我不知道如何将数据读入Dataset具有所需格式的 Tensorflow。我当前正在运行以下代码:
DEFAULTS = []
n_features = 6170
for i in range(n_features+1):
DEFAULTS.append([0.0])
def parse_csv(line):
# line = line.replace('"', '')
columns = tf.decode_csv(line, record_defaults=DEFAULTS) # take a line at a time
features = {'label': columns[-1], 'x': tf.stack(columns[:-1])} # create a dictionary out of the features
labels = features.pop('label') # define the label
return features, labels
def train_input_fn(data_file=sample_csv_file, batch_size=128):
"""Generate an input function for the Estimator."""
# Extract lines from input files using …Run Code Online (Sandbox Code Playgroud) 我有张量流的情况。我想找到两个具有不同形状的二维张量的交集。
例子:
object_ids_ [[0 0]
[0 1]
[1 1]]
object_ids_more_07_ [[0 0]
[0 1]
[0 2]
[1 0]
[1 2]]
Run Code Online (Sandbox Code Playgroud)
我正在寻找的输出是:
[[0,0],
[0,1]]
Run Code Online (Sandbox Code Playgroud)
我遇到了“tf.sets.set_intersection”,tensorflow页面:https://www.tensorflow.org/api_docs/python/tf/sets/set_intersection
但无法对不同形状的张量执行此操作。我发现的另一个实现位于:
但很难将其复制到二维张量。
任何帮助将不胜感激,谢谢
全部
我正在尝试将数据序列化到 tensorflow 中的 tfrecords 文件。我按照这里的说明操作:https : //github.com/tensorlayer/tensorlayer/blob/master/example/tutorial_tfrecord.py
如本说明所示,我需要example 为每个记录构建一个,每个记录example包含多个feature.
但是,我在初始化该功能时遇到了问题。这是我的测试代码:
import tensorflow as tf
import numpy as np
feature_str=tf.train.Feature(bytes_list=tf.train.BytesList(value = np.array(["a" , "b"])))
feature_int=tf.train.Feature(bytes_list=tf.train.Int64List(value = np.array([32 , 24])))
feature_flo=tf.train.Feature(bytes_list=tf.train.FloatList(value = np.array([32.1 , 24.1 ])))
Run Code Online (Sandbox Code Playgroud)
但是,我遇到了以下错误,这是直觉的:
usr/local/lib/python2.7/dist-packages/h5py/ init .py:36: FutureWarning:不推荐将 issubdtype 的第二个参数从floatto转换np.floating。将来,它将被视为np.float64 == np.dtype(float).type. from ._conv import register_converters as _register_converters Traceback(最近一次调用):文件“test.py”,第7行,在feature_int=tf.train.Feature(bytes_list=tf.train.Int64List(value = np.array([32 , 24]))) 类型错误:MergeFrom() 的参数必须是同一类的实例:预期的 tensorflow.BytesList 得到了 tensorflow.Int64List。
我进一步尝试使用tf.train.BytesListfornp.array([32,24])并得到以下错误:
feature_int=tf.train.Feature(bytes_list=tf.train.BytesList(value = np.array([32 …
我正在为NLP任务构建TensorFlow模型,我正在使用预训练的Glove 300d字矢量/嵌入数据集.
显然,一些令牌不能被解析为嵌入,因为未包含在用于单词矢量嵌入模型的训练数据集中,例如稀有名称.
我可以用0的向量替换那些令牌,但不是将这些信息丢弃在地板上,我更喜欢以某种方式对其进行编码并包含在我的训练数据中.
说,我有'raijin'这个词,它无法解析为嵌入向量,用Glove嵌入数据集一致地编码它的最佳方法是什么?将它转换为300d向量的最佳方法是什么?
谢谢.