TensorFlow 1.4将TF数据集移动到core(tf.data.Dataset),doc/tutorial建议tf.estimator用于训练模型.
但是,正如本页末尾所建议的那样,必须在input_fn函数内实例化数据集对象及其迭代器.这意味着每次调用都将重新开始数据集的迭代estimator.train(input_fn, steps).因此,调用步骤<在纪元中的样本数量,将导致在数据集的子集上训练模型.
因此我的问题.是否可以使用Estimator + Dataset实现类似的功能:
for i in range(num_epochs):
# Train for some steps
estimator.train(input_fn=train_input_fn, steps=valid_freq)
validation_iterator.
# Evaluate on the validation set (steps=None, we evaluate on the full validation set)
estimator.evaluate(input_fn=valid_input_fn)
Run Code Online (Sandbox Code Playgroud)
没有在每次调用时从头开始训练样本迭代estimator.train(input_fn=train_input_fn, steps=valid_freq)?
例如,与此处不同,实例化数据集及其迭代器input_fn?我尝试过,但它不工作,因为那么输入(从数据集迭代器)和模型(从估计model_fn)是不一样的图的一部分.
谢谢
相关的GitHub问题
我正在尝试为我的模型编写一些自定义方法但是我收到以下错误:
Attribute Error: 'ForeignRelatedObjectsDescriptor' object has no attribute all|filter
运行此代码时会发生这种情况:
chore = Chore(name='Laundry') chore.schedule_set.create(week_day='monday', time_due='17:30:00') chore.scheduled()
有没有人对如何做这项工作或我可能缺少什么有任何建议?我检查了Django文档,但它们似乎只涵盖了模型的最基本用途.
models.py:
from django.db import models
from datetime import date, timedelta
class ChoreManager(models.Manager):
def by_day(self, week_day):
if week_day == 'today':
week_day = date.today().strftime("%A")
chores = self.filter(week_day=week_day)
if chores.count() > 0:
return chores
else:
return False
def today(self):
return self.by_day(week_day='today')
class Chore(models.Model):
chores = ChoreManager()
name = models.CharField(max_length=50)
notes = models.TextField(null=True)
def scheduled(self, week_day=None):
if week_day is None:
schedule_count = Chore.schedule_set.all().count()
else:
if week_day == 'today': … 根据文档,可以为 指定不同的损失函数SGDClassifier。据我所知,这log loss是一个cross-entropy理论上可以处理软标签的损失函数,即以某些概率 [0,1] 给出的标签。
问题是:是否可以使用开箱即SGDClassifier用的log loss功能来解决软标签的分类问题?如果不是 - 如何使用 scikit-learn 解决这个任务(软标签上的线性分类)?
更新:
方法target是标记的,根据问题的性质,硬标签不会给出好的结果。但这仍然是一个分类问题(不是回归),我不想保留对prediction回归的概率解释,所以回归也不能开箱即用。交叉熵损失函数可以target自然地处理软标签。scikit-learn 中线性分类器的所有损失函数似乎都只能处理硬标签。
所以问题大概是:
例如,如何为 指定我自己的损失函数SGDClassifier。它似乎scikit-learn不坚持这里的模块化方法,需要在其源代码中的某处进行更改
如何配置 traefik 在日志文件中记录 request_body?
我的配置文件如下:
traefik.toml
logLevel="INFO"
defaultEntryPoints = ["http", "https"]
[accessLog]
format = "json"
Run Code Online (Sandbox Code Playgroud) 我想使用 python 脚本将路径附加到现有环境变量 PATH 中。
我尝试使用os.environ['path'] = 'C:\foo\bin:%PATH%',但它删除了所有现有路径并创建
'C:\foo\bin:%PATH%'为新路径值。
os.environ['path'] = 'C:\foo\bin:%PATH%'
Run Code Online (Sandbox Code Playgroud) 我知道有些线程出现此错误消息,但是它们并没有真正提供问题的答案,这就是为什么我决定打开另一个线程并再次询问...希望其他人遇到相同的问题,并解决了它。
import UIKit
import AVFoundation
class RecordSoundsViewController: UIViewController, AVAudioRecorderDelegate {
// MARK: IBOutlets for Buttons
@IBOutlet weak var recordingLable: UILabel!
@IBOutlet weak var recordButton: UIButton!
@IBOutlet weak var stopRecordingButton: UIButton!
var audioRecorder : AVAudioRecorder!
override func viewDidLoad() {
super.viewDidLoad()
stopRecordingButton.isEnabled = false
// Do any additional setup after loading the view, typically from a nib.
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}
@IBAction func recordAudio(_ sender: Any) {
configureUI(true) // Call to set Buttons enabled state correct
// …Run Code Online (Sandbox Code Playgroud) 我有一个数据df1框,对应nodes于网络中的egelist 和value节点本身,如下所示:
df
node_i node_j value_i value_j
0 3 4 89 33
1 3 2 89 NaN
2 3 5 89 69
3 0 2 45 NaN
4 0 3 45 89
5 1 2 109 NaN
6 1 8 109 NaN
Run Code Online (Sandbox Code Playgroud)
我想添加一个w对应于value_jif是否有值的列.如果value_j是NaN我想设置w作为平均的相邻节点的值的i.在node_i仅具有NaN设置值的相邻节点的情况下w=1.
所以最终的数据框应该像愚弄:
df
node_i node_j value_i value_j w
0 3 4 89 33 33 …Run Code Online (Sandbox Code Playgroud) 我有一个数据框和一个列表:
df = pd.DataFrame({'id':[1,2,3,4,5,6,7,8],
'char':[['a','b'],['a','b','c'],['a','c'],['b','c'],[],['c','a','d'],['c','d'],['a']]})
names = ['a','c']
Run Code Online (Sandbox Code Playgroud)
我想仅在列中同时存在a并且c都存在的情况下获取行char。(这里的顺序无关紧要)
预期产量:
char id
1 [a, b, c] 2
2 [a, c] 3
5 [c, a, d] 6
Run Code Online (Sandbox Code Playgroud)
我的努力
true_indices = []
for idx, row in df.iterrows():
if all(name in row['char'] for name in names):
true_indices.append(idx)
ids = df[df.index.isin(true_indices)]
Run Code Online (Sandbox Code Playgroud)
这给了我正确的输出,但是对于大型数据集来说太慢了,因此我正在寻找更有效的解决方案。
这有效
numpy.multiply(13, 3)
Run Code Online (Sandbox Code Playgroud)
事实并非如此
numpy.multiply(x1=13, x2=3)
Run Code Online (Sandbox Code Playgroud)
它提出了一个invalid number of arguments例外.有人可以解释为什么请.我试图按照文档进行操作,但是参数列表中包含的字符/和*字符有点丢失.如果您也可以解释这些含义,我们将不胜感激.
我正在尝试使用以下代码加载转储的文件:
cols = None
with open('./experiments/columns.p', 'rb') as p:
cols = pkl.loads(p).read()
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:
“需要一个类似字节的对象,而不是‘_io.BufferedReader’”
python ×5
pandas ×2
python-3.x ×2
apply ×1
avfoundation ×1
logging ×1
numpy ×1
post ×1
request ×1
scikit-learn ×1
swift ×1
tensorflow ×1
traefik ×1
xcode ×1