我刚刚通过安装了最新版本的 Tensorflow pip install tensorflow,每当我运行程序时,我都会收到日志消息:
W tensorflow/stream_executor/platform/default/dso_loader.cc:55] 无法加载动态库“cudart64_101.dll”;dlerror: 找不到 cudart64_101.dll
这很糟糕吗?如何修复错误?
虽然最好只抛出从std::exception类派生的类型的异常,但C++可以抛出任何东西.以下所有示例都是有效的C++:
throw "foo"; // throws an instance of const char*
throw 5; // throws an instance of int
struct {} anon;
throw anon; // throws an instance of not-named structure
throw []{}; // throws a lambda!
Run Code Online (Sandbox Code Playgroud)
最后一个例子很有趣,因为它可能允许传递一些代码在catch站点执行,而不必定义单独的类或函数.
但是有可能抓住一个lambda(或一个闭包)吗?catch ([]{} e)不起作用.
随着最近升级到1.4版,Tensorflow包含tf.data在库核心中.在描述一个"主要的新功能" 版本1.4发行说明是tf.data.Dataset.apply(),这是一个"应用自定义转换功能的方法".这与现有的有tf.data.Dataset.map()什么不同?
我正在尝试使用我自己的数据集和类进行在imagenet上预训练的Inception-resnet v2模型的传输学习.我的原始代码库是对tf.slim样本的修改,我找不到了,现在我正在尝试使用tf.estimator.*框架重写相同的代码.
但是,我正在运行从预训练检查点加载一些权重的问题,用其默认初始值设定项初始化剩余的层.
研究这个问题,我发现了这个GitHub问题和这个问题,都提到了需要tf.train.init_from_checkpoint在我的问题中使用model_fn.我试过了,但由于两者都没有例子,我想我错了.
这是我的最小例子:
import sys
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
import tensorflow as tf
import numpy as np
import inception_resnet_v2
NUM_CLASSES = 900
IMAGE_SIZE = 299
def input_fn(mode, num_classes, batch_size=1):
# some code that loads images, reshapes them to 299x299x3 and batches them
return tf.constant(np.zeros([batch_size, 299, 299, 3], np.float32)), tf.one_hot(tf.constant(np.zeros([batch_size], np.int32)), NUM_CLASSES)
def model_fn(images, labels, num_classes, mode):
with tf.contrib.slim.arg_scope(inception_resnet_v2.inception_resnet_v2_arg_scope()):
logits, end_points = …Run Code Online (Sandbox Code Playgroud) 我正在尝试从numpy数组创建tfrecord格式的数据集.我想存储2d和3d坐标.
2d坐标是float64类型的numpy数组(2,10)3d坐标是float64类型的numpy数组(3,10)
这是我的代码:
def _floats_feature(value):
return tf.train.Feature(float_list=tf.train.FloatList(value=value))
train_filename = 'train.tfrecords' # address to save the TFRecords file
writer = tf.python_io.TFRecordWriter(train_filename)
for c in range(0,1000):
#get 2d and 3d coordinates and save in c2d and c3d
feature = {'train/coord2d': _floats_feature(c2d),
'train/coord3d': _floats_feature(c3d)}
sample = tf.train.Example(features=tf.train.Features(feature=feature))
writer.write(sample.SerializeToString())
writer.close()
Run Code Online (Sandbox Code Playgroud)
当我运行这个我得到错误:
feature = {'train/coord2d': _floats_feature(c2d),
File "genData.py", line 19, in _floats_feature
return tf.train.Feature(float_list=tf.train.FloatList(value=value))
File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\site-packages\google\protobuf\internal\python_message.py", line 510, in init
copy.extend(field_value)
File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\site-packages\google\protobuf\internal\containers.py", line 275, in extend
new_values = [self._type_checker.CheckValue(elem) for elem in elem_seq_iter]
File …Run Code Online (Sandbox Code Playgroud) 我觉得这个问题肯定已被多次询问和解决,因为在我看来这是一个非常通用的场景,但我找不到任何指向解决方案的方法.
我正在尝试实现一个通用的可迭代Generator对象,该对象产生一个数字序列,直到满足某个终止条件,表明已经达到这样的条件以便停止迭代.
基本思想本质上是与Python的生成器类似,其中一个对象产生值,直到它不再产生为止,然后StopIteration引发异常以通知外部循环序列已完成.
根据我的理解,问题分为创建序列生成对象,然后在其上获取迭代器.
对于序列生成对象,我想我会定义一个基Generator类,然后扩展它以提供特定的行为(例如,从一组范围中获取值,或从固定值列表中获取等).所有GeneraorS中的每个呼叫产生一个新的值operator()或者抛出一个ValuesFinishedException如果发电机跑到序列的末端.我这样实现了这个(我以单范围子类为例,但我需要能够建模更多类型的序列):
struct ValuesFinishedException : public std::exception { };
template <typename T>
class Generator
{
public:
Generator() { };
~Generator() { };
virtual T operator()() = 0; // return the new number or raise a ValuesFinishedException
};
template <typename T>
class RangeGenerator : public Generator<T>
{
private:
T m_start;
T m_stop;
T m_step;
T m_next_val;
public:
RangeGenerator(T start, T stop, T step) :
m_start(start),
m_stop(stop), …Run Code Online (Sandbox Code Playgroud) 系统信息:1.1.0,GPU,Windows,Python 3.5,代码在ipython控制台中运行.
我正在尝试运行两个不同的Tensorflow会话,一个在GPU上(执行一些批处理工作),一个在CPU上,我用于快速测试,而另一个工作.
问题是当我产生第二个会话时指定with tf.device('/cpu:0')会话尝试分配GPU内存并崩溃我的其他会话.
我的代码:
import os
os.environ["CUDA_VISIBLE_DEVICES"] = ""
import time
import tensorflow as tf
with tf.device('/cpu:0'):
with tf.Session() as sess:
# Here 6 GBs of GPU RAM are allocated.
time.sleep(5)
Run Code Online (Sandbox Code Playgroud)
如何强制Tensorflow忽略GPU?
正如@Nicolas在评论中所建议的那样,我看了看这个答案然后跑了
import os
os.environ["CUDA_VISIBLE_DEVICES"] = ""
import tensorflow as tf
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
Run Code Online (Sandbox Code Playgroud)
打印:
[name: "/cpu:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 2215045474989189346
, name: "/gpu:0"
device_type: "GPU"
memory_limit: 6787871540
locality {
bus_id: 1
}
incarnation: …Run Code Online (Sandbox Code Playgroud) git difftool在存储库中调用时,git会将本地存储库中的已修改文件与远程中的匹配项进行比较.要做到这一点,它为远程的临时文件,设置变量LOCAL和REMOTE取工具在Git的配置的差异列表中指定和调用.
默认情况下,将在中创建临时文件/tmp/<hash>_filename.是否可以更改此默认位置?
长话短说,我通过windows子系统使用git for linux,我想使用windows工具做差异和合并.问题是,/tmp无法从Windows端访问,因此我需要将git创建临时文件的默认位置移动到Windows可访问的位置.
到目前为止,我所能找到的只是一个建议,sudo mount -B /tmp /mnt/c/tmp但这似乎不起作用(/tmp仍然指向与以前相同的目录...)
我正在尝试根据用户可以选择的可能日期列表对日期进行搜索。使用日历,我要求用户输入日期,然后我要获取所有可能的数据包,这些数据包的“ data_possibile”列表中都包含该日期。
这是我正在使用的查询:
@NamedQuery(name="pacchettoPreconfigurato.findVendibileByData", query="SELECT p FROM PacchettoPreconfigurato p WHERE p.in_vendita=TRUE AND (:data) IN (p.date_possibili)")
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试在服务器的日志中部署应用程序时,我得到:
Exception Description: Problem compiling [SELECT p FROM PacchettoPreconfigurato p WHERE p.in_vendita=TRUE AND (:data) IN (p.date_possibili)]. [81, 97] The state field path 'p.date_possibili' cannot be resolved to a collection type.
Run Code Online (Sandbox Code Playgroud)
这是p.date_possibili的定义方式:
@OneToMany(orphanRemoval=true)
@JoinColumn(name="id_pp")
private List<DataPossibilePP> date_possibili;
Run Code Online (Sandbox Code Playgroud)
其中DataPossibilePP为:
@Entity
@IdClass(DataPossibilePPPK.class)
public class DataPossibilePP implements Serializable {
@Id
private Integer id_pp;
@Id
private Date data;
private static final long serialVersionUID = 1L;
/*standard getters and setters*/
} …Run Code Online (Sandbox Code Playgroud) 我有一个函数 fun 需要几个参数 p0,p1,.. 对于每个参数,我给出了一个可能值的列表:
p0_list = ['a','b','c']
p1_list = [5,100]
Run Code Online (Sandbox Code Playgroud)
我现在可以为 p0,p1 的每个组合调用我的函数
for i in itertools.product(*[p0,p1]):
print fun(i)
Run Code Online (Sandbox Code Playgroud)
现在问题来了:如果我已经知道参数 p1 只对 fun 的结果有影响,如果 p0 是 'a' 或 'c' 怎么办?在这种情况下,我需要我的参数组合列表看起来像:
[('a', 5), ('a',100), ('b', 5), ('c',5), ('c', 100)]
Run Code Online (Sandbox Code Playgroud)
所以 ('b', 100) 只是被省略了,因为这将是对乐趣的不必要评估。
我的最终解决方案:
param_lists = [['p0', ['a','b','c']],['p1', [5,100]]]
l = itertools.product(*[x[1] for x in param_lists])
l = [x for x in l if not x[0] == 'b' or x[1]==5]
Run Code Online (Sandbox Code Playgroud)
我将这种方法用于 5 个参数和各种条件,并且效果很好。它也很容易阅读。这段代码的灵感来自 Corley Brigmans 和 nmcleans 的回答。
python ×6
tensorflow ×5
c++ ×2
exception ×1
git ×1
git-difftool ×1
iterator ×1
jpa ×1
jpql ×1
keras ×1
lambda ×1
numpy ×1
product ×1
python-2.7 ×1
python-3.x ×1
tfrecord ×1